Africa2036

A living record

What changed

A foresight platform that quietly rewrites its own projections is not accountable to anyone. When an outlook here moves, the previous version and the reason are preserved.

The policy

6.2.4 — The export gets its own identifier, and the build identifier stops being asked to mean more than it does

2026-07-31

clarification transparency

Edition 6.2.3 carried the same build identifier as 6.2.2 — ee0e1f8a. That is correct and not a mistake: the build identifier is a hash of the asset map, the content-addressed JavaScript and CSS, and not one browser asset byte differed between those two editions. It has never covered HTML, the data payloads or the export. build.json and the export manifest now say so in a published field rather than leaving it to be inferred, and the note that described it as 'a hash of hashes of the shipped bytes' has been narrowed to what it actually hashes.

An identifier that appears to cover more than it does invites exactly the false conclusion a reviewer is using it to avoid — two editions sharing a build identifier reads as 'nothing changed' when what it means is 'no JavaScript or CSS changed'. Stating the coverage costs one field and removes the ambiguity.

addition transparency

The export manifest now carries exportSetHash: a SHA-256 over the seven export data files, each by path and content digest. It is reproducible from the served files alone — fetch them, hash each, sort by path, join, hash again — and it deliberately excludes manifest.json, because a manifest cannot contain a hash of itself without circularity.

The export needed an identifier of its own. Without one, the only way to answer 'is this the same export set I saw yesterday?' was to compare seven hashes by hand, and the build identifier could not answer it at all because it does not cover the export.

addition transparency

The guide now has a section on the export: what it is, that it restates already-public evidence, the schema-version and integrity guarantees, that a consumer should begin with /exports/v1/manifest.json, and that it is read-only and carries no private data from any other system. The individual JSON files are deliberately not listed in the sitemap — they are payloads for a program that already has the manifest, not pages for a crawler to index.

The export was reachable only by knowing the URL. Documentation is the right discovery mechanism for it; a sitemap is not.

addition method

The supported Node version is pinned in package.json and .nvmrc, and a new check copies the working tree into two clean directories, installs and generates the export in each, and compares all eight files byte for byte across both and against the committed export.

The determinism check already in place regenerated the export inside one process, in one working tree. That proves the generator agrees with itself; it cannot see a dependence on the working directory, on file-system ordering, or on an artefact left by an earlier stage. Determinism is claimed for the pinned version and is now tested the way the claim is stated.

6.2.3 — A versioned machine-readable export, so the evidence can be read by a program without scraping the pages

2026-07-31

addition transparency

There is now a versioned export at /exports/v1/. It publishes what this platform already publishes — the 54 countries, the 74 indicators with each issuing body's own definition, 3,840 observed values with their years, the 92 cited sources, the 158 reviewed research claims with their delivery status and tier, the evidence state of every dimension for every country, and the four vocabularies — as JSON with stable identifiers and explicit relationships. A manifest declares, for every file, its exact byte length, its SHA-256, its record count, and the four vocabularies as values with their own hashes. Not one figure, claim or source in the export is new: every one of them is already on a public page.

Anything that wants to read this evidence programmatically has had one option, which is to parse the rendered pages. That is bad for both sides. It breaks whenever a layout changes, and it produces a reader that quietly starts inventing data at the moment it breaks rather than stopping. A versioned export with per-file hashes lets a consumer verify that what it received is what was published, and lets it fail loudly instead of guessing. The version is the promise: v1 is immutable in shape, fields may be added, and nothing is ever removed or retyped without a v2 published alongside it.

addition method

The export is deterministic: identical source data produces byte-identical files, including the manifest. Nothing in it is read from the clock — the generation timestamp is the build's own, and the verification timestamp is the newest verification date in the research record.

The export's integrity rests on a hash per file. A generator that stamped the wall clock, or that iterated a map in an unstable order, would change every hash on every build, and a consumer checking those hashes would see tampering where there was none. Validation regenerates the whole export from source and compares it byte for byte, so a hash that moves means the data moved.

correction method

The first working version of the export generator read observed values from the atlas summary, where the values and their years are held in two separate maps. It produced an observations file that was present, well-formed, correctly hashed — and empty, with zero records — and reported success. It now reads the per-country detail files, which carry each value together with its year, and publishes 3,840 observations.

This is recorded because the failure is worth naming rather than quietly fixing: an empty file that passes every structural check is exactly the kind of error that survives review. Validation now asserts that every country and every indicator in scope reaches the export, so an empty or short file fails instead of passing.

6.2.2 — The platform moves into its own repository, and its canonical origin moves with it

2026-07-28

addition transparency The build pipeline, the deployment configuration and the verification suites. No research, no evidence, no country page and no published figure.

This platform now has its own repository. It previously lived inside a portfolio repository of thirty-six sites, served from a subdirectory, and shared that repository's deployment configuration. Every served byte is unchanged by the move: rebuilding in the new location produced the identical build identifier, and a file-by-file comparison found no difference other than the build date, the build timestamp and the commit identifier.

Three things follow from a platform sharing a repository with unrelated work, and all three had already caused problems here. Its deployment configuration sat two directories away from the site it governed, which is how an inert copy of that configuration came to be edited twice in the belief that it took effect. Its internal working documents sat in a public repository, so removing them from the website did not make them unreadable. And its build had no independent record — a change to any of the other thirty-five sites moved the same history. The platform is now the only thing in its repository, its deployment configuration sits beside the site it governs, and there is exactly one copy of it.

addition transparency Nothing served. The website's contents are unchanged.

The internal working documents have left the public repository entirely — the generator trace, the clone-response playbook, the evidence-bundle procedure, the monitoring checklist, the controlled-service architecture, the domain-migration checklist and the legal handover note. The generator trace is now a build artefact, regenerated on demand and never committed. Its sha256 is still published at /institutional/audit-summary.json so the retained copy can be identified.

Edition 6.2 removed the trace from the website and recorded, at the time, that it remained readable in the repository because that repository is public. That was a stated limitation rather than a fixed one, and moving the platform to its own repository was the opportunity to fix it properly. Nothing about the published method changes: the pipeline is still public, still described in full on the guide page, and still inspectable by anyone who wants to check how a number was produced.

correction transparency Every canonical tag, all 181 sitemap URLs, robots.txt, the machine-readable licence link and every composed briefing.

The canonical origin has changed for a third time. Edition 6.2.1 recorded it as aiyah-sandy.vercel.app; that entry is left as written, because it was accurate then. It is now africa-ai-intelligence.vercel.app.

The first two changes were corrections — one origin did not exist, and the next instructed search engines not to index the platform. This one is deliberate: the platform was extracted into its own repository and given its own deployment, and the old name was inherited from a repository holding thirty-six sites and described nothing. One property of this platform makes the change worth recording rather than treating as routine. The deployment does not build the site — the repository holds the finished output — so the origin is compiled into every canonical tag, the sitemap, robots.txt, the licence link and every briefing's provenance block at build time. Where the site is served does not change what it says about itself, and a setting in a hosting dashboard cannot correct a wrong origin here. Only a rebuild can. The previous origin is expected to redirect rather than disappear, because shared links exist and a sitemap was submitted under it.

6.2.1 — The platform was telling search engines not to index itself, and the Changes page scrolled sideways

2026-07-27

correction transparency Every page. One constant governs the origin, so the correction reaches all of them in one rebuild.

Every page on this platform named, as its own canonical address, a host that returns “X-Robots-Tag: noindex”. The canonical tags, the sitemap, the sitemap reference in robots.txt, the Open Graph URLs, the machine-readable licence link and the provenance block on every briefing all pointed at aiyah-hannah-kwakyes-projects.vercel.app. That host serves the production build correctly, but it is the deployment platform’s project-and-team-scoped alias, and the platform marks it noindex. The canonical origin is now aiyah-sandy.vercel.app, the assigned production domain, which serves the identical deployment with no such header.

The header was not ours and was not wrong: a non-canonical deployment alias should not be indexed. The defect was that the platform pointed at the alias instead of the production domain, so it was publishing an instruction to index an address that instructs search engines not to index it. Both hosts were checked by requesting the build record from each and getting the same edition and build back, which is what established that this was one deployment on two addresses rather than a preview deployment or a misconfigured environment. It was fixed at the origin rather than by adding a robots meta tag, because a meta tag cannot override an HTTP header — it would only have added a second, contradictory instruction. This is the second time the canonical origin has been wrong: it previously named a host that did not exist at all. Production verification now fails the build if any route declared indexable returns a noindex header, carries a noindex meta tag, or declares a canonical URL belonging to a different origin than the one being verified.

correction presentation A new audit measures every static documentation route at 390, 412, 768, 1024, 1363 and 1440 pixels — 126 combinations — and fails the build on any horizontal overflow.

The Changes page scrolled sideways — by 615px at a 1363px window, and by 1,275px on a 390px phone. Three other routes had the same defect at phone widths: the source register, the shareable cards, and the instrument’s method page.

A chip is used for both a one-word category and a sentence describing what an entry affects, and chips were set never to wrap. A flex row wraps between its items but never inside one, so a single chip carrying a sentence had a minimum width of 1,623px and set the width of the whole document. The text past the right edge could not be reached, because the page also hid horizontal overflow on the body — which concealed the symptom while making the content unreadable rather than merely awkward. Chips now wrap when they do not fit and break inside a long hash or URL when there is no other opportunity; a short category chip still occupies one line and is unchanged. Two related causes were fixed with it: a card holding a table could not shrink below the table’s natural width, and bare source URLs had no break opportunity. Nothing was shortened or removed.

6.2 — The generator trace comes off the public surface, and every briefing carries its provenance

2026-07-27

correction transparency The former public trace address, now removed. An aggregate summary — edition, build, combinations audited, coverage, test totals, date, and the hash of the retained file — is published at /institutional/audit-summary.json instead.

The previous edition published the generator trace at a public address. It was reachable, returned 30,811 bytes, and disclosed the internal name of the rule that withholds a prioritisation, the per-country dimension branches the generator evaluates, and the arrays of what it treats as held and as missing for each country. It has been removed from the deployed tree and the address no longer resolves.

The intention was auditability and the intention was right: a withheld statement should have a traceable cause. What was published went well beyond the cause. It was not a research finding, not evidence, and not something a reader needed in order to check a number — it was the machinery, and publishing it made the instrument straightforward to reconstruct without doing any of the research. No credential and no personal data was in it, and nothing published about any country was wrong because of it. The trace is retained in full, privately, and its sha256 is published so the retained file can be identified. Its contents are not republished here, because restating them would repeat the exposure this entry records.

addition transparency 333 files deployed, 163 excluded, 274 text files scanned. Runs on every build.

An automated deployment-surface audit that derives the deployed set from the actual output and the deployment-exclusion rules, rather than from a list somebody maintains by hand.

The trace was published by a build step and nothing checked what the build step published. Every hand-maintained list on this platform has drifted at least once, so the audit reads what is actually there: it fails the build on pipeline source, raw research, generator traces, test fixtures, environment files, credentials, version-control internals, notes, unpublished research, administrative or debug routes, stack traces, local filesystem paths, source maps and contact records, and it scans the real bytes of every deployed text file for secret-like patterns. It found two further live exposures on its first run — an infrastructure state file disclosing a deployment identifier, and a duplicated deployment configuration — and both are now excluded.

correction transparency One exclusion file, at the repository root. Verified against the live origin after deployment.

The deployment-exclusion rules were being written into a file the deployment never reads. A second copy of the rules sat beside the served files; the copy that governs sits at the repository root. Rules added to the inert copy earlier in this edition did nothing, and the two files they were meant to withhold — an infrastructure state file disclosing a deployment identifier, and a duplicated deployment configuration — went on being served at HTTP 200 while the surface audit reported a clean result.

The audit had preferred the inert copy: it looked for an exclusion file, found that one first, and stopped. So the instrument built to catch exactly this kind of mistake committed it. It now reads only the file that governs, translates its repository-relative rules into the served directory's frame, and refuses to run at all if that file is absent — an audit that cannot find the real rules must fail rather than report on a surface it has not checked. The duplicated configuration and the inert exclusion file have been deleted rather than kept in sync, because a configuration file that looks authoritative and is not will eventually be edited by someone who believes it works. Deployment and infrastructure configuration is now a forbidden class in its own right, so a reintroduced copy fails the build.

addition transparency /rights/

A Rights and Permitted Use page, linked from the footer of every page and from Method, Trust, About and every composed briefing.

Quoting, citing, linking, printing and teaching need no permission and never did; the page says so first, because most readers arrive wanting to do one of those. It states what does require permission, and it states plainly what it does not claim: the underlying public statistics belong to the institutions that issued them, under their terms, and facts are not ownable. No copyright registration and no trade mark registration has been verified for this work, so none is claimed and the registered-mark symbol appears nowhere on the platform — the build fails if it does. The page also says what it cannot do: this is a public website, anything visible can be copied, and a rights page states terms rather than enforcing them.

addition method Every briefing, its print view and its copied text.

Provenance on every composed briefing: platform, publisher and director, scope, edition, build identifier, the date evidence was verified to, the address that reproduces the document, a ready-made citation, an explicit output status, and a content fingerprint derived from the document's own content.

A briefing leaves this platform by being printed, shared or pasted, and used to lose its authorship on the way out. The fingerprint lets two people holding a document that claims the same title and edition find out whether they hold the same document. It is a document identifier and is described as one: it is not a digital signature, nothing here is cryptographically signed, and the block that shows it says so.

addition transparency Every generated page.

Structured rights and authorship metadata on indexable pages — author, rights holder, permitted-use statement and a machine-readable licence link to the rights page.

It states who authored the work and where the terms are, in a form a search engine and a citation tool can read. It exposes nothing about how the work is built.

6.1.1 — The briefing generator stops asking for evidence it already holds

2026-07-27

correction method Every country, every decision question. The full 54 × 6 × 3 × 3 matrix — 2,916 briefings — was regenerated and inspected.

Ghana’s briefing for “Where should we invest first?” withheld prioritisation — correctly — and then requested household electricity access, internet use, account ownership and secondary enrolment. All four are held for Ghana and displayed two sections above, at 91.9%, 72.2%, 81.2% and 75.7%, all observed in 2024.

The root cause was not Ghana. The withheld branch carried a hard-coded list of things to request, so whenever no priority rule fired the generator asserted that the observations were missing — without consulting the register. It would have produced the same sentence for any of the 54 countries, including those where the observations are held and those where they are genuinely absent. The real limitation was never absence: a national point observation cannot establish which constraint binds, how local it is, how reliable a service is, what it costs, or whether a programme worked.

addition method A dimension ladder for 18 indicators, naming what each observation establishes and the dimensions it cannot reach.

Ten explicit evidence states, which never collapse into a generic “missing data” condition: held and sufficient; held but not granular enough; held but not current enough; held but not comparable across the selection; held but incapable of establishing priority; research held but the outcome unmeasured; examined and nothing found; unexamined; a source that could not be accessed; and not applicable to the decision.

Each state produces a different requirement. Electricity access held with outage data absent asks for hours of supply, not for electricity access. Account ownership held with lending decisions unmeasured asks for credit-bureau coverage and refusal rates, not for account ownership. Two countries observed in different years are held but not directly comparable, which is not the same as absent. The requirement is now derived from the state that caused the limitation.

addition method pipeline/audit-briefings.mjs, pipeline/audit-briefings-prefix.mjs

A full-matrix generator audit and ten negative fixtures, run against the pre-fix generator before the correction and again after.

Five of ten fixtures failed before the fix and all ten pass after — the Ghana phrasing itself, and the four dimensions it should have requested instead. The audit generates all 2,916 single-country briefings, 14 comparison groups, 35 audience briefings and 55 lever briefings, and asserts semantic properties against the indicator registry rather than against a word list. A word search would not have caught this: every word in the defective sentence was defensible. What catches it is asking, of every requested item, whether the platform already holds it.

addition transparency /institutional/generator-trace.json

Generator provenance. Every withheld statement records the rule that withheld it, the observations consulted with their years, the dimensions found missing and their evidence states.

Published as a build artefact rather than as interface clutter, so validation can assert that a statement has a traceable cause. It carries no credentials and nothing private — only which rule fired and what it consulted. Validation fails if a withheld answer has no provenance, or if any of the ten states is never demonstrated.

addition method 35 audience briefings checked on every build.

Audience selection was verified to change framing without changing facts.

Across five countries and all seven audiences, the evidence baseline is byte-identical. An instrument whose facts move with its reader is not an evidence instrument.

6.1 — Ten developed chambers, a corrected labour indicator, and a briefing that answers the question

2026-07-27

correction transparency The Decision Lab across all 54 countries, the female-participation reading, and the comparison label, which now reads “Female participation rate (15+)”.

The Decision Lab described Ghana’s female labour-force participation rate as women’s share of the labour force. Previous wording: “women were 55.3% of the labour force”. Corrected wording: “55.3% of women aged 15 and over were in the labour force, employed or unemployed (2025) — a participation rate, not women’s share of the workforce”.

The indicator is SL.TLF.CACT.FE.ZS, “Labor force participation rate, female (% of female population ages 15+)”, a modelled ILO estimate republished in the World Development Indicators. Its denominator is the female population aged 15 and over. Ghana’s stored series traces exactly to it: 55.265 for 2025, matching the API to three decimal places. The two measures differ by their denominator and by tens of points, and the wrong one reads as a statement about workplace composition when it is a statement about how many women work at all. The register now carries the denominator and an explicit statement of the measure it is NOT, and validation rejects any passage describing a participation rate as a share of the labour force or the reverse.

correction product Every page footer.

The footer described the instrument as “a six-country institutional instrument” for an entire edition after it became a 54-country product.

The description was a sentence in a template and the scope was a list in a module, and nothing connected them. The sentence is now derived from the list, so the count cannot go stale: adding a featured chamber updates every surface that describes the instrument. Validation fails the build if outdated scope language reappears anywhere except the changelog and the Changes page, which are the historical record and must never be rewritten to hide a correction.

addition transparency Côte d’Ivoire, Egypt, Ethiopia, Ghana, Kenya, Morocco, Nigeria, Senegal, Tanzania and Zambia.

All ten featured chambers now meet the published Deep review standard through evidence breadth: 8 to 13 reviewed documents each, 5 to 9 from primary or official sources, across 8 to 11 of 12 decision areas.

The previous edition had three chambers at Deep review and five at Initial. Thirty-one documents were added from national statistics agencies, central banks, ministries, the IMF, the World Bank, FAO, the OECD and the BCEAO. Validation now fails if any featured country falls below the standard, and separately if a country reaches it through repetition — more than half its items in one category fails the build however many documents it holds.

correction method Evidence-depth computation for all 54 countries.

Two decision areas were unreachable by any evidence. “Institutional implementation capability” was not a dimension at all, so fiscal, budget, central-bank and political evidence counted for nothing; and “announced versus delivered” sat in the breadth denominator while naming no research categories, so every country was permanently one area short of a target it had no way to earn.

Both were found while auditing why countries with several IMF reviews on the record earned no breadth for them. The first is now a dimension in its own right — it is one of the twelve decision areas this instrument is specified against. The second is excluded from the denominator, because it is answered from the delivery states of the record rather than from documents.

addition product /institutional/ai-work-inclusion/brief/

The briefing generator now answers the question selected, rather than returning the same evidence summary whatever was asked.

Each of the six decision questions has its own answer built from the country’s own evidence: priorities and dependency sequencing; measured exclusions and delivery-channel ceilings; a status-by-status delivery position; cohort, conditions and invalidators; dated signals with thresholds and confirming evidence; and unexamined areas with a practical research agenda. Where the evidence cannot support prioritisation, the briefing withholds it and names what would be required — a priority list assembled from a record that cannot support it would be the most persuasive and least defensible thing this platform could produce. Every produced statement carries an evidence label: observed, delivery record, or implication.

addition product /institutional/ai-work-inclusion/brief/

Comparison-group briefings for two to four countries, with an explicit statement of what is and is not comparable.

The page promised a briefing for “a country or comparison group” while permitting only one country. A group briefing now names which measures share an observation year and are therefore comparable, and which do not — where two countries’ figures come from different years, the difference is partly a difference of vintage and is not treated as a gap. No ordering is applied and no composite is computed.

addition product /institutional/ai-work-inclusion/lab/ and all 54 chambers.

The Decision Lab gained an institutional-action structure, and the chambers gained a lived-experience layer.

Each lever now states the decision being considered, what the evidence permits and what it forbids, preconditions taken from a dependency graph, who is likely reached first and last from the country’s own distribution, delivery risk read from its own record, the evidence needed to measure the effect, bearing signals, and a link that generates a briefing using that country and lever. The lived-experience layer builds six situations only where the indicators they name are held — where they are not, the page says “not generated from the available evidence” rather than substituting general prose. Ten personas were not fabricated to satisfy a count.

addition transparency /institutional/ai-work-inclusion/method/

A published record of thirteen sources this platform tried to use and could not.

A bibliography of what was read is half the record. Senegal’s own quarterly labour-force survey returned 503 on every attempt, so no ANSD figure is stated anywhere and Senegal’s labour-market position rests on a modelled ILO series instead. Zambia’s ministry serves its AI strategy over an incomplete certificate chain, which was not bypassed. Côte d’Ivoire’s government page for its national AI strategy returned 503, so this platform does not state that Côte d’Ivoire has one. Each entry names what was lost, because an evidence base with its failures removed looks more complete than it is.

correction method Command view, Decision Lab, Compare, Signals and Briefing.

A shared briefing link opened from another briefing showed the previous one.

A hash-only navigation does not reload the document, and only two of the five interactive views re-read their state on a hash change. The URL said one thing and the page showed another — which for a shareable, citable object is the worst available failure. All five views now re-synchronise from the URL, through a registry rather than by re-running their setup, which would have bound a second set of listeners each time.

correction product /institutional/ai-work-inclusion/brief/

Every briefing now carries the full required section list, whatever question was asked. Previously only the section matching the question was produced.

A reader asking “where should we invest first?” was never told what had already been delivered, and a reader asking “what should we monitor?” never saw the exclusions. The question decides which section leads and is marked “answers your question”; it does not decide which facts the reader is allowed to see. All sixteen sections — direct answer, evidence baseline, scenario implications at the selected horizon, priorities, sequencing, beneficiaries and last-reached groups, delivery risks, announced-versus-delivered, signals with thresholds, conditions, invalidators, evidence gaps, definitions, assumptions, limitations and sources — are now present in all six, and validation fails the build if any is missing.

addition transparency Every briefing.

Briefings carry a definitions section giving the issuing body’s own name, denominator and not-this-measure statement for every indicator used.

A figure whose denominator is not on the page is a figure a reader cannot check. This is the same correction as the Ghana labour-force error, applied structurally rather than one sentence at a time: the denominators now travel with the briefing.

addition product /institutional/ai-work-inclusion/lab/

The Decision Lab shows dependencies between levers as a tiered graph.

A lever appears in a later tier only because another lever’s mechanism is assumed by it — an online skills programme cannot reach someone with no connection. Levers within a tier are in no order at all, and the caption says so, because an ordered list that does not mean an order is how a dependency diagram becomes a ranking in a reader’s hands.

6.0 — AI, Work & Inclusion becomes an institutional decision instrument

2026-07-27

addition product 63 institutional routes.

The institutional instrument now covers all 54 UN member states in Africa, with ten featured chambers: Côte d’Ivoire, Egypt, Ethiopia, Ghana, Kenya, Morocco, Nigeria, Senegal, Tanzania and Zambia.

Availability and depth are different things, and the instrument now separates them explicitly. Every country has a chamber built from the shared data. Ten go substantially deeper, answering nine further institutional questions that need country-specific evidence to answer at all. The remaining 44 answer what their evidence supports and say where it stops — a thin record is described as a thin record rather than padded with generic language to make the pages look symmetrical. South Africa is not a featured chamber; it keeps a standard chamber, remains part of the 54-country platform, and appears in continent-wide data where methodologically necessary.

addition product /institutional/ai-work-inclusion/

Six working modules: a 54-country command view, a Decision Lab, a comparison workspace, a signals register, an institutional briefing generator and an implementation pathway.

A research microsite answers questions nobody asked. These are organised around decisions: where to act, who an intervention would miss, whether an announcement has been delivered, what could change by 2031 and 2036, and what to monitor. Every module works with JavaScript disabled and is enhanced, not replaced, by it — an institution on a constrained connection or with scripting restricted by policy is exactly the intended user.

addition method /institutional/ai-work-inclusion/lab/

The Decision Lab holds eleven intervention levers, and refuses to invent an effect for any of them.

A lever either states arithmetic on values this platform observed — with the observation years — or states no number at all. Where it cannot be calibrated it gives the bounded qualitative implication, the assumption behind it, who the intervention would miss, and the evidence that would be needed to measure the effect. Validation enforces this: every figure in a supported reading must trace to an observation year held for that country, and an unquantified lever that omits its limits fails the build. A number invented to fill that gap would be the most dangerous thing on this platform.

addition transparency Egypt, Morocco, Ethiopia and Côte d’Ivoire country briefs, which gain evidence.

Four new featured countries researched, and each cited source opened before use.

Egypt’s second National AI Strategy 2025–2030 with its published targets; the World Bank’s US50 million Morocco Digital Transformation Acceleration Program approved on 12 June 2026; Ethiopia’s Fayda digital ID at 30 million registrations against a 90 million target; and the MTN–ALX partnership in Côte d’Ivoire announced with no training yet delivered. Two documents that could not be opened were not cited: an Ivorian government page returning 503, and Egypt’s own strategy PDF, which exceeded the size this platform can retrieve — its targets are therefore recorded from the OECD’s official register rather than quoted from the primary text, and the item says so.

addition method 169 smoke checks, 49 audit checks, 131 validation groups.

Ten user journeys are now tested end to end, rather than routes being checked for existence.

A status code proves a page exists. It does not prove an institution can enter from the homepage, filter 54 countries, open a deep chamber, change scenario and horizon, read an intervention, compare countries, inspect signals, generate a briefing, print it, and return to Africa 2036 with the atlas intact. Those ten are now walked in a real browser on every build, alongside keyboard-only operation, visible focus, tap-target sizes at 390px and 412px, and horizontal overflow.

correction transparency All 54 institutional chambers.

Working-age population was rendered as a percentage on the institutional chambers, producing figures such as “76,233,316%” on Egypt’s page.

The scenario table applied one unit to every row, and the working-age trajectory is a count of people rather than a share. It was found by looking at the rendered page on a phone, not by any test — the value was internally consistent and no rule was violated, which is exactly the class of defect that survives a green build. Units are now per trajectory.

addition method /institutional/routes.json

The instrument publishes its own route manifest, and production verification reads it.

The previous edition recorded a verification tool that mirrored production from a hard-coded route list and reported false failures when the list drifted. Rather than update the list again, the product now declares its routes at build time and the verifier consumes that declaration — so a route cannot be added without verification following it.

correction method pipeline/verify-production.mjs

Production verification mirrored the institutional pages without their JavaScript, and reported seven journey failures against a production that was serving all of it correctly.

The mirror discovered its asset graph by reading four hand-picked pages and following their module imports. The instrument has its own entry point, referenced only from institutional pages, so it was never discovered — the mirrored pages loaded no script and every interactive check failed. This is the second time a verifier has reported a false failure from a hand-maintained list, and the second fix of the same shape: the graph is now seeded from every page route the run knows about, including the routes the live product declares in its own manifest. The verifier also now names the failing checks rather than printing only a tally, because “162/169” forces whoever reads it to reproduce the whole run to learn which seven — which is how a real failure gets waved through.

5.5 — AI, Work & Inclusion — a six-country institutional instrument

2026-07-27

addition product Nine new routes. Nothing existing was moved, redirected or removed.

A specialised institutional instrument covering six countries — Ghana, Kenya, Nigeria, Senegal, Tanzania and Zambia — at /institutional/ai-work-inclusion/.

It asks a narrower question than the platform: whether AI adoption, broadband expansion, digital public infrastructure, skills development and enterprise support can produce inclusive employment and better public services. Each country answers the same eleven questions, in the same order, with the same sections. Nigeria is present as a scale case — what happens when these mechanisms are attempted across a very large, highly informal and unequal economy — and explicitly not as the standard the other five are judged against. South Africa is outside this instrument’s scope and remains covered in full by the 54-country platform.

addition method The six instrument countries. 43 milestones, of which 2 are dated targets.

A milestone timeline between the formal horizons, carrying dated events and published targets rather than interpolated numbers.

2026, 2031 and 2036 remain the only formal scenario horizons. A reader looking at the gap between two of them will fill it themselves if the platform does not, and the tempting way to help is to draw a line between the endpoints and print a value for 2028 — a fabrication with the appearance of an observation. The intervening years therefore carry milestones only. Every milestone names its source, its delivery status, its date and what it does not establish, and a milestone dated in the future is labelled a target rather than rendered as an event.

addition transparency The country briefs for Nigeria, Senegal, Tanzania and Zambia, which gain evidence. No existing item was altered and no indicator value changed.

Eight research items added for Senegal, Tanzania, Zambia and Nigeria, each verified against a source that was opened.

Senegal held one reviewed document and Zambia two, against Nigeria’s eleven. Equal treatment across six countries is not possible on an evidence base that thin. Two sources could not be opened and were therefore not cited: a Tanzanian ministry PDF returning 503, and a Zambian ministry document whose server presents an incomplete TLS certificate chain. Where a document was retrieved but unreadable — the Tanzanian framework is a scanned PDF — its targets are not recorded, and the item says so rather than quoting figures from secondary reporting.

addition method Nine new check groups; 128 in total.

Validation now enforces the instrument’s constraints: six countries exactly, Nigeria present, South Africa absent, identical section structure across all six, alphabetical order, no ranking or scoring language, three formal horizons, and no milestone phrased as a projection by this platform.

Comparison across six countries is exactly where league-table language appears, usually by accident and usually in a caption. The rule set is strict everywhere except inside regions explicitly marked as disclaimers — the instrument has to be able to state that it does not rank, and saying so requires the words.

addition method pipeline/snapshot-baseline.mjs and pipeline/baseline-expected.json

A reproducible deployment baseline that proves what did and did not change.

The shared page shell is one file for the whole platform, so adding a single footer link moves the bytes of all 118 pages while changing the evidence on none of them. The baseline therefore digests each brief twice: once raw, and once with the shell, content-addressed asset names and build date removed. That turns “nothing else changed” from an assertion into a check — 50 briefs byte-identical in substance, four changed exactly as declared. The baseline can be rebuilt from any git commit, so it is verifiable rather than a file recorded at a convenient moment.

correction method pipeline/audit-indicators.mjs. No published value was ever wrong.

The indicator audit reported 36 years of Central African Republic data as missing from the World Bank API when the API holds every one of them.

A failed fetch returned null after its retries, and the empty result was read as an answer rather than as a failure. Unreachable and empty are different states, and collapsing them manufactures data defects out of network weather. The audit now reports an unreachable country as not verified. On re-run, all 74 series verify clean: 110,510 stored observations checked against the issuing API, zero mismatches.

correction method pipeline/verify-production.mjs

The production-verification tool mirrored the site from a fixed route list that did not include the new institutional routes, and then reported contrast and broken-link failures on pages production was serving correctly.

The mirror returned 404 pages with no stylesheet, so the browser suites measured default black-on-transparent text and called it a contrast failure. Production was correct throughout; the tool was not. A verification tool that reports a false failure is more dangerous than one that reports nothing, because it is believed — and the same mistake in the other direction would report a false pass. The mirror now takes the instrument’s routes from the same scope definition the instrument itself is built from, so a seventh route cannot be added without the mirror following it.

5.4 — Indicator identity, population scope and definitions made explicit

2026-07-26

correction transparency Nothing was changed in any value. The finding is recorded because a reported discrepancy that turns out to be sound is still worth publishing.

A reported Ghana financial-inclusion regression was investigated and found not to exist. Ghana’s figure is 81% and traces exactly to FX.OWN.TOTL.ZS for 2024. The 52% that prompted the report is Liberia’s value on the same indicator and the same year.

Both figures were traced to the raw series before either was preferred. The World Bank Indicators API returns Ghana 2011=29.43, 2014=40.51, 2017=57.72, 2021=68.23, 2024=81.24 — identical to the stored series to two decimal places. Liberia returns 2024=52.21. No indicator was mis-mapped, no country or year lookup was wrong, and no subgroup series was substituted. All 195 stored observations of this indicator, across 48 countries, were re-fetched from the API and matched.

correction transparency Every surface where a financial-inclusion figure appears

The question exposed a real deficiency: the platform displayed a short label where a definition was required. "Account ownership, age 15+" states neither the denominator nor whether mobile money counts.

FX.OWN.TOTL.ZS is account ownership at a financial institution OR with a mobile-money-service provider, as a percentage of the population aged 15 and over. Mobile money is included, and in much of Africa it is most of the figure. The bank-only series is a different measure and is materially lower. Every place the figure now appears states the population scope and the mobile-money treatment in the same sentence as the number, and the register carries the issuing body’s own definition beside every series.

addition method All 74 series across all 54 countries

All 74 indicator codes were re-verified against the World Bank Indicators API: code identity, official name, definition, and every stored value against its own country and year.

Three distinct failures can each silently corrupt a figure — a retired or re-scoped code, a lookup landing on the wrong row, and a label that describes a different measure from the code it carries. They are now checked separately and against the issuing API rather than against our own copy of it. One label was corrected: "Working-age share (projections)" is now "Population aged 15–64 (projections)", matching SP.POP.1564.TO.ZS.

addition method The build

Validation rules for indicator identity, population scope and definitions. A financial-inclusion series cannot ship until it states its denominator, its mobile-money treatment, and the measure it is NOT.

The last of those three exists so the bank-only and bank-or-mobile-money series can never be plotted as one trend. The build also now fails if any percentage series lacks a stated denominator, if two series share an indicator code, if a shipped code disagrees with the definition captured for it, or if generated prose states an account figure without its population scope and mobile-money treatment. The phrase "of adults" is rejected outright: the series denominator is people aged 15 and over.

correction method The indicator audit

The new audit script could destroy data when run on a single series, and did.

Running it with --series=account wrote a definitions file containing one entry, silently removing the other 73 from the build. Caught by the validation added in the same change, which reported 73 series with no published definition. Partial runs now merge rather than replace.

correction method The language rules, and two reading templates

The language checker’s sentence splitter did not recognise a sentence that opens with a figure, and reported 306 sentences as over-length when they were pairs of ordinary ones.

Rewriting the account passages to state population scope put a numeral at the start of several sentences — “81% of people aged 15 and over held…”. The splitter only began a new sentence at a capital letter, so it welded each of those onto the sentence before it. The failure mode matters more than the bug: a checker that reports prose which does not exist sends you rewriting text that was never at fault. The splitter now admits an opening digit, and a fixture pins that behaviour. Two readings were genuinely over-length and have been shortened.

correction method The population and working-age series, and the sources register

The new indicator-identity rule treated two deliberate series pairings as duplicates.

Population and working-age share are each held twice: once as observed history from the World Development Indicators, and once as the UN projection series from the World Bank’s Population estimates and projections database. They share an indicator code because they are the same measure; they are different series because they come from different databases. Uniqueness is now keyed on code and database together, and the database identifier is published beside every series, so the two can be told apart on the sources page rather than only in the pipeline.

5.3 — Launch correction: a cache header that told browsers to run year-old code

2026-07-26

correction method Every returning visitor between the 5.2 deployment and this one

Scripts and stylesheets were served with Cache-Control: public, max-age=31536000, immutable on filenames that never changed. An independent review reproduced the pre-5.2 guided journey on the live site after 5.2 had deployed, and was right to.

"immutable" is a promise that the bytes at a URL will never differ, so a browser holding a copy does not revalidate it at all. The HTML was correctly served max-age=0, must-revalidate — so a returning visitor received the new page and ran the old JavaScript. Every module import inside it was a stable path too, so even a fresh entry point would have pulled stale dependencies. The deployment was correct throughout; the cache instruction was false.

correction method Every page

Asset filenames now contain a hash of their contents, and the module graph is rewritten leaf-first so every import is content-addressed too.

A change of bytes is now always a change of URL. The address a browser is asked to load after this deploy has never existed before it, so no cache anywhere can hold a stale copy of it. Caching correctness no longer depends on any header being obeyed. The cache policy was narrowed as well — fonts keep a long lifetime because they genuinely never change; everything else revalidates.

correction transparency The Changes page and /build.json

The platform now publishes a build identifier at /build.json and shows it on this page: the commit, the edition, and the content hash of every script and stylesheet the build serves.

During the incident a stale cached bundle was indistinguishable from a failed deployment, and settling that needed access to the repository. It should not. Anyone can now compare what their browser is running against what the deployment declares.

correction method The production verification suite

The verification method was wrong, and is recorded as wrong. Every previous production check used curl, which has no persistent cache — so every request behaved like a first visit, and the defect was invisible to all of them.

Those checks proved production COULD serve the new bytes. They never proved a returning browser WOULD use them, and the difference is the whole incident. Verification now follows the asset graph the live HTML declares rather than a hard-coded list, asserts the alias serves the expected commit, rejects a long-lived cache header on any URL that is not content-addressed, and drives a browser context primed with sabotaged code at the old paths to prove it is never requested.

correction method Deployment configuration

The first attempt at the cache fix edited the wrong file and shipped as a silent no-op.

There are two vercel.json files — one beside the site and one at the repository root — and Vercel applies the root one, because the project root directory is the repository. Editing only the site copy changed nothing, and this was found by reading the live response headers rather than by trusting the deploy. Validation now fails if the two files disagree, and fails again if any long-lived cache rule covers URLs that are not content-addressed.

5.2 — Launch correction: the guided journey is a route, not a side effect

2026-07-26

correction experience Every guided-journey entry point

Activating "Take the guided journey" rewrote the address to an atlas URL such as #/?y=2036&s=momentum&l=internet, and the journey could mount invisibly. A production review reported the link as doing nothing and sending the visitor to the general help panel instead.

The journey was fired as a side effect and its URL immediately discarded, so the address bar described the atlas while the journey was running. Worse, step one calls the app's own navigation, which re-entered the render loop before the journey handle had been assigned — mounting a SECOND overlay, orphaning the first, and leaving a card in the document at opacity 0. That race is what "appears not to work at all" looked like, and it was timing-dependent, which is why it showed up on a phone more often than on a desktop.

correction method Direct arrival, refresh, copied links, Back and Forward

The journey is now a real route. #/tour stays in the address for the whole journey and is what starts, stops and restores it.

Making the URL the source of truth fixes four things at once that were each broken separately: direct arrival, refresh, a copied link, and the Back button. Refreshing #/tour previously landed on the atlas with no journey, because the hash had been rewritten before the reload could read it. Back previously needed two presses, because the journey's own step navigation pushed history entries; it now navigates by state and pushes none.

correction experience The guided journey

The journey now hands back the scenario, year and lens exactly as it found them, returns focus to the control that opened it, and cannot stack overlays or listeners on replay.

The journey changes the scenario, the year and the lens to demonstrate them — that is its purpose — but they belong to the visitor. They are snapshotted on start and restored on exit. Focus moves into the journey card when it opens so a screen reader announces the step, and returns to the opening control when it closes. Starting the journey closes the opening sequence and the help panel, so only one thing is ever open.

addition method The browser test suite

A regression suite covering all eight journey entry points across three viewport profiles, plus keyboard-only operation, reduced motion and the accessibility shape. The suite grew from 93 browser checks to 128.

The rule the review asked for is at the top and is strict: activating the homepage link must produce a VISIBLE first step — in the document, opaque, laid out and inside the viewport — and must not be satisfied by the general help panel. Run against the pre-fix code the suite fails seven checks, including the destroyed URL, the broken refresh, the two-press Back and the lost view state.

5.1 — Launch correction: shared-link metadata, heading semantics, evidence-to-language boundaries, territorial scope

2026-07-26

correction method Every interactive country route

An interactive country view changed the page title but kept the homepage canonical, description, Open Graph title and Open Graph image. A shared Ghana link advertised itself as the generic Africa 2036 homepage.

A hash fragment is not a separate document to a search engine, so neither a canonical of "/#/country/GHA" nor one of "/" is correct. Every indexable signal for an open country now points at that country's static brief — a real URL with its own country-specific title, description and image — while the interactive state stays addressable in the hash for people. The share control was also changed: it now copies the brief URL, carrying the scenario and year as parameters, because that is the address a link preview can actually read. A second control still copies the exact atlas view, labelled as what it is.

correction experience The atlas, the country dialog, the Weave, Compare and the opening sequence

The atlas had no h1 at all, and the country dialog rendered the country name as an h2. A screen-reader user opening Ghana reached a document with no primary heading.

The country chamber, the Weave, Compare and the opening sequence are aria-modal dialogs over the atlas, so while one is open the atlas heading is not exposed and the dialog needs its own. The atlas now carries a visually-hidden h1; each dialog carries its own h1; and the shell is marked inert and aria-hidden while a dialog is open, so focus cannot tab into content assistive technology has been told is not there. Verified against the real accessibility tree rather than by counting tags — an inert subtree does not appear in that tree at all, which is the property under test.

correction intelligence All 54 countries — the decision layer, the lived-experience situations, the readings and the benefit and risk lists

Generated prose asserted relationships between measured quantities that the measurements do not establish. The clearest case: "digital payment records are becoming the collateral that land titles never were for most traders", built from an account-ownership figure.

The validators already prevented fabricated numbers. They did not prevent fabricated relationships between real numbers — a sentence with two true figures either side of a causal verb is a claim nobody measured. Nine distinctions are now enforced at build time across every generated passage: correlation is not causation, access is not quality or reliability, account ownership is not access to credit, internet availability is not affordability or productive use, electricity access is not electricity reliability, a policy announcement is not implementation, a programme envelope is not an outcome, a national average does not establish who benefited, and a plausible mechanism is not an observed result. The arguments themselves are kept, not deleted: they are labelled as plausible implications and must name the evidence that would settle them.

addition method All 54 countries

Mechanical prose discipline: a sentence-length ceiling, a conjunction-chain limit, percentage points distinguished from percentages, and a changing share reported separately from the number of people it describes.

The horizon answers were single sentences of up to 90 words assembled from separate measured fragments, which is how fragments become an apparent conclusion. They are now lists of short statements. Access changes are reported twice and deliberately: as the share of the population reached, in percentage points, and as the number of people still not reached — because a share can rise while the number left out rises with it, and only the second figure describes people.

correction method Every surface where the count appears, plus new scope sections on Method and Trust

The phrase "all 54 internationally recognised African countries" is replaced everywhere with "the 54 UN member states in Africa", and a territorial-scope note is published on both Method and Trust.

The earlier phrase was ambiguous about a real distinction. The African Union has 55 member states; the difference is the Sahrawi Arab Democratic Republic, an AU member that is not a UN member state, and sovereignty over Western Sahara is disputed. The scope is a dataset decision: every indicator series and population projection this platform uses is published against UN member states, there is no equivalent series for the SADR, and this platform does not estimate values to fill a gap. It takes no position on sovereignty — Western Sahara remains drawn on the map as a distinct hatched territory labelled a UN Non-Self-Governing Territory with disputed sovereignty, because erasing it would be as inaccurate as colouring it in.

correction method The language-rule fixtures

A test fixture written for this patch was itself wrong, and is recorded rather than quietly fixed.

The negative control for the language rules was "Electricity access reaches 92%, so power is reliable for a workshop" — offered as acceptable prose. It is not: it infers reliability from access, which is one of the nine distinctions. The rule was right and the fixture was wrong. The control is now a sentence that genuinely stays inside its evidence.

5.0 — The launch edition: an instrument a stranger can understand in two minutes

2026-07-25

addition experience The homepage

A new opening sequence whose central device is one real number — how many people on this continent use the internet — shown as measured, then forked into the three futures the platform computes.

Four editions built an instrument that rewarded people who already knew what it was. A visitor who understands why one number becomes three understands the whole thing, and no paragraph does that as fast as watching it happen. Every figure in the sequence is summed live from the same payload the atlas reads; none is hard-coded. Skippable in one key, replayable from the header and from #/start, and under reduced motion it becomes a single static page with every beat visible at once.

addition experience The guided journey at #/tour, and the help panel

An optional guided journey of about ninety seconds that drives the real interface — real lenses, real scenario switches, a real country, the real Weave.

It calls the same functions a visitor’s own clicks call. There is no separate demonstration path, so the tour cannot show behaviour the instrument does not have, and every figure it states is read from the live payload at the moment it is spoken. Pause, back, skip and replay all work, and the browser suite fails if any of them stops working.

addition intelligence All 54 countries, the chamber, the briefs and the cards

A decision layer — "Why this matters" — asking seven questions of every country: what could materially change by 2031 and by 2036, who may benefit, who may be excluded, what must happen for this to be plausible, what could invalidate it, and what to watch now.

Everything else on this platform answers what the evidence says. This answers the question a person actually arrives with. Every answer is computed from that country’s own evidence and model state, so none can drift from the data it rests on, and an answer the evidence cannot support is returned marked unsupported with the reason stated rather than softened into prose that reads like an answer. The build fails if two countries produce an identical answer — which it did, for Mauritius and Eswatini, until the generator was given country-specific anchors.

addition experience Every country page and brief

The three scenarios now carry a character: what each is good at, what it costs, who it reaches last, what it quietly assumes, and how it is usually misread.

Three growth rates are not three futures. Momentum is not the safe case — it is the case in which nothing is done differently. Acceleration describes a pace and says nothing about distribution, and faster national numbers can coexist with a widening internal gap this platform cannot see. Disruption is bounded by what a country has already survived, which makes it the most conservative of the three about how bad things could get. Selecting a scenario now changes the temperature and the argument of the interface, not only the numbers.

addition transparency The card sets, the Trust page, and the social preview for every page

Shareable intelligence objects: up to five card types per country, a social preview image for each, and a plain-language Trust page covering the nine distinctions that change what a number here means.

A screenshot travels further than the page it came from and arrives without the qualifications that made it honest. Every card and every image therefore leads with the range rather than a value, and carries the confidence state, the research depth, the data vintage, the verification date, the conditional statement and the full attribution inside the frame. The build rejects any card that states a projected quantity as a certainty.

addition method The whole platform

A launch audit that gates deployment: contrast, keyboard reach, focus visibility, reduced motion, narrow viewports, touch targets, page weight, broken links, metadata, landmarks and empty states.

The smoke suite asks whether it works. The audit asks whether it is fit to be introduced in public. On its first run it failed seven checks and every one of them was real.

correction method Every page, and the sitemap

The canonical origin and every sitemap URL pointed at africa-2036.vercel.app, a hostname that returns 404.

A wrong canonical is worse than no canonical: it instructs a search engine to index an address nobody can reach. It is now the verified production origin, overridable by SITE_URL for the day a custom domain is attached.

correction design Every surface

Two colour tokens were lifted for legibility — the dimmest text tone and the Disruption hue, which measured 4.30:1 and 4.43:1 as small text against a 4.5:1 bar. The "not evident" force level was being rendered in a border colour at 1.36:1.

Found by the audit rather than by eye. The third was the worst of them: "not evident" is one of the two states this platform depends on to stop silence reading as a finding, and it was very nearly invisible.

addition experience All 54 briefs, the atlas, the About page and the 404 page

Direct-arrival orientation on every country brief, entry-by-intention on the atlas, an About page, a 404 that offers the country index, and attribution on the atlas itself.

Most visits to a country page arrive from a shared link rather than from the homepage, and the atlas — the most-visited page here — was the only one that did not say who made it.

4.0 — Creative and cultural intelligence, and a corrected research conclusion

2026-07-25

correction research Method page, five country pages, and the standard for declaring a research gap

The third edition reported that no country-specific creative-economy sources meeting this platform's standard could be found. That conclusion was wrong and is withdrawn.

It rested on a single unproductive search rather than on an exhausted one. Reopening it produced primary and official country-level material within a day: the African Development Bank's i-DICE press release for Nigeria, the South African Cultural Observatory's mapping work, the Creative Economy Support Bill published by the Parliament of Kenya, Ghana's Creative Arts Industry Act 2020 on GhaLII, and an AfDB procurement notice for a Rwandan creative-economy feasibility study. The earlier conclusion is recorded here rather than deleted, because a platform that quietly replaces its own findings cannot be audited.

addition research Ghana, Kenya, Nigeria, Rwanda and South Africa

A creative and cultural intelligence layer, with a measurement frame as a required field on every item.

Creative-economy figures are the most definition-sensitive numbers on this platform. South Africa is now shown at 4.3% of GDP under a cultural, creative and sports satellite account for 2021 and at 1.7% under a creative-only mapping for 2018 — both, side by side, with their frames printed above the figures. Presenting either alone would misstate the sector by a factor of about two and a half.

addition method The Weave, and every future creative item

Ten build-time validation rules specific to creative-economy claims, including an absolute bar on applying a continental statistic to an individual country.

UNESCO's African fashion trade figures and UNCTAD's Creative Economy Outlook 2024 totals are real, and are now held in the continental systems layer attached to no country. Quoting an Africa-wide total beside one national flag is the most common way a creative-economy claim becomes false. The build fails rather than warns.

addition experience Countries with reviewed creative evidence

A new lived-experience situation for people who make and sell things — cloth, furniture, beadwork, beauty — shown only for countries with reviewed creative evidence.

The part of the creative economy that is made by hand is the part official statistics see least. The situation says so, and states that no reviewed source in any country reports what makers earn.

correction method Congo (DRC), Ethiopia, Ghana, Kenya, Nigeria, South Africa; Method page

Six countries — Congo (DRC), Ethiopia, Ghana, Kenya, Nigeria and South Africa — now reach Deep country review, and the Method page no longer states that none does.

Each was short on breadth rather than on interest: all six already carried infrastructure, technology and sector evidence, and none carried human-development evidence. Adding health, education and fiscal items — Kenya's Social Health Authority and its first CBC senior-school cohort, the IMF's 2026 Article IV figures for Nigeria, South Africa's 2026 Budget Review and the suspension of its National Health Insurance Act, Ethiopia's ECF programme and exchange-rate reset, and the DRC's free maternity scheme and free primary education — closed the fifth area. They were promoted by the classifier against the published criteria, not by editorial decision, and no country was moved up for seeming important enough to deserve it.

gap research Ghana, Nigeria

Two creative items are recorded as needing a second source: Nigeria's national-accounts screen-sector figures, held only through secondary reporting of the NBS release, and Ghana's announced creative-business licensing regime, held from a single press report.

Both are worth tracking and neither is confirmed. They are marked in the interface rather than dropped, because a stated gap is more useful than a silent absence.

addition research Congo (DRC), Ethiopia, Kenya, Nigeria, South Africa

Human-development evidence added as a first-class part of the country standard: health financing, health-system delivery and education reform, not only macroeconomics and infrastructure.

The platform had 0 items in housing, healthcare, education and agriculture across all 54 countries. It could describe a data centre being built and not a health scheme being withdrawn. The DRC entry — a free maternity scheme announced, funded, launched, and then reported as ending — is the clearest case of why: it is what a cleared delivery gate failing looks like, and nothing in the indicator layer would have shown it.

addition transparency Sources page

The Sources register now lists every reviewed document, not only the indicator databases, and is filterable by source tier, category, verification state and freshness, with keyword search.

The register previously listed 74 databases and none of the 115 individual documents that were opened and read. The research layer was auditable one country at a time and nowhere as a whole. Filtering is progressive enhancement: with JavaScript off the table is complete and readable, and every filtered view states how many rows of how many it is showing, so a narrow filter can never be mistaken for a small register.

addition transparency Sources page

A research-gap register, computed from the same data as the source register rather than written by hand.

A register that lists only what was found describes the platform flatteringly. This one counts what is missing: countries with no document reviewed, countries below Deep review, documents not independently verified, documents past their freshness window, indicator series covering fewer than 40 countries, and countries with no creative-economy evidence. Because it is computed, it cannot go stale while the rest of the page stays current.

addition ai All 54 countries, Method page

The AI layer became a 20-dimension profile across physical foundation, governance, capability and consequence, with an explicit evidence state on every dimension.

Earlier editions fired six interpretive readings from indicator thresholds. That had one specific failure: a country with nothing recorded looked identical to a country nobody had researched, so silence read as a finding. Two of the five evidence states — not evident and unexamined — now separate a finding about the world from a finding about this platform, and every country page counts them apart. No score is produced; ranking 54 countries by a weighted sum of twenty states would manufacture a number nobody measured.

addition research Kenya, Nigeria, South Africa

Local-language technology intelligence, with a published standard for what counts as evidence.

A language appearing on a vendor's supported-languages list is marketing and is not accepted here. What counts is a benchmark on a named language, a released corpus with a stated collection method, or an evaluation by a research group. Recorded: Nigeria's NITDA language-infrastructure partnership, the African Next Voices corpus of 9,000 hours across 18 languages in Nigeria, Kenya and South Africa, Kenya's voice collection across three language families, the Masakhane hub's 50-language grant programme, and survey evidence that over 98% of African languages remain unsupported in public datasets.

addition method Kenya, Nigeria, South Africa; the research validator

Second-source confirmation on major commitments, with a build rule that a corroborating source must come from a different publisher and must state what it independently establishes.

A second source that reprints the first press release adds nothing but the appearance of verification. The rule rejects it. Applied to i-DICE, where the corroboration establishes that disbursement arrangements were finalised eight months after launch; to Kenya's Creative Economy Bill, where it establishes that the Bill moved to the National Assembly rather than merely existing as a draft; and to South Africa's NHI suspension, where it dates the postponement to a presidential statement and establishes it as an executive act rather than a consequence of litigation. Items still awaiting a second source are marked unconfirmed in the interface.

3.0 — Continental research completion: depth classification, source tiers, and primary verification

2026-07-25

expansion research 9 countries newly reviewed; 13 of the 22 remain at baseline

Country-specific research extended to 9 of the 22 previously unreviewed countries: Botswana, The Gambia, Lesotho, Libya, Malawi, Mozambique, Sudan, South Sudan and Zimbabwe.

Each now has at least one item traceable to a named publisher with a date and a URL. The remaining 13 were not padded with weak sources — they keep indicator-baseline status and state why.

addition method All 54 countries

Added a four-tier research-depth classification — Indicator baseline, Initial country review, Multi-sector review, Deep country review — computed from breadth across five target areas rather than from item count.

A country with one source was previously labelled identically to one with five across five sectors. Depth is now visible on the country list, the country page, the briefs, and as a map lens, and the criteria are published on the Method page.

addition research All 79 research items

Every research item now carries a source tier — primary, official, secondary or tertiary — and, where applicable, the delivery gate it last cleared: political announcement, legal approval, budget allocation, financial close, procurement, construction commencement or verified delivery.

A secondary report of a figure the issuing institution publishes itself is weaker evidence than the institution's own document. Separating the delivery gate from the status makes it visible when a project has been announced for years without clearing any gate.

correction research Ghana

WITHDRAWN: the claim that Ghana was "Africa's fourth most indebted country to the IMF, owing over US$3.6 billion".

Primary verification was attempted and the ranking could not be reproduced. The IMF publishes total credit outstanding only as a consolidated all-member figure, not by country. Replaced with two primary IMF Executive Board press releases: the US$3 billion ECF approved May 2023, and the fifth review completed December 2025 releasing about US$385 million and bringing disbursements to roughly US$2.8 billion — a different measure, correctly labelled.

Raised by: Third-edition instruction to resolve unverified secondary claims against primary material.

flag research Kenya

KEPT UNVERIFIED: the claim that Kenya was negotiating a new IMF programme with IMF credit outstanding among Africa's largest.

Primary verification was attempted and failed. IMF press releases return Kenya reviews only to the seventh EFF/ECF review of June 2024, with no 2026 release confirming a new arrangement. The status was not upgraded. The item now names exactly what would settle it: an IMF press release announcing a new Kenya arrangement, or the Financial Position in the Fund table on the IMF Kenya country page.

correction research Zambia, Burkina Faso

UPGRADED: Zambia's debt-restructuring claim and Burkina Faso's programme status moved from secondary summaries to the IMF Executive Board's own press releases.

Both were previously recorded from secondary reporting of IMF material that the IMF publishes directly.

addition interface All 54 countries

Added a per-country research transparency panel: item count, categories covered, target areas covered and missing, primary/official versus secondary/tertiary counts, verified versus unverified counts, and oldest and newest source dates.

Data abundance is not research diversity. A reader should be able to see which one they are looking at.

addition research Research layer

Added expanded delivery statuses — partially operational, suspended, disputed and unverified — alongside the existing set.

Libya's oil output and South Sudan's production are partially operational rather than either announced or fully delivered; Mozambique LNG was suspended under force majeure for four years rather than cancelled. The vocabulary now fits the reality.

2.0 — Lived experience, structural forces, and an auditable research layer

2026-07-25

addition all All 54 countries

Added a lived-experience layer: ten representative situations per country, per scenario, per horizon.

The first edition explained the futures intellectually but did not convey what they would mean for a person. Each vignette is computed from that country's own projected values, states its assumptions, and names who the improvement would miss.

addition all All 54 countries

Added a structural-forces layer: sixteen forces the quantitative baseline cannot contain, assessed qualitatively and never converted into probabilities.

A band drawn from fifteen years of a country's own growth cannot represent a war, a default, or a dam that has never existed. Naming those forces beside the baseline is more honest than widening the band and pretending it covers them.

addition research 32 countries reviewed, 22 awaiting review

Replaced the informal curated layer with an auditable country-research store: every item carries a category, a delivery status, geographic scope, time horizon, source title, publisher, publication date, URL, verification date and reviewer status.

A platform that treats an announced project as delivered infrastructure is a press-release aggregator. Status is now a first-class field, and the build fails if a claim is unsourced, self-contradictory, or written in the future tense while marked operational.

expansion research 27 countries newly reviewed

Country-specific evidence review expanded from 5 countries to 32.

The first edition's method page correctly disclosed that only 5 of 54 countries had reviewed policy evidence. This edition raises that materially while continuing to label the remainder honestly.

addition interface Interface

Added optional orientation, reachable from the header at any time.

The cinematic entry is preserved, but a first-time visitor had no concise explanation of what a lens is, why projected numbers are not predictions, or what the confidence labels mean.

correction attribution Every page

Corrected the build credit. The footer read "Designed & built by Hannah Kwakye — engineered with Fable 5"; that credit was inherited from a repository-wide convention in the surrounding portfolio collection and was inaccurate for this project.

The implementation was built with Claude Opus 5 under Hannah Kwakye's direction. Model attribution now sits once on the Process page rather than in every footer, and the public hierarchy leads with the initiative, the institution and its director.

flag attribution Every page

Removed the Orvantis Intelligence footer link pending verification.

It pointed at the brand's portfolio demonstration site rather than a verified official address. No current official URL could be established from this project's configuration, so the organisation is named in plain text rather than linked to a guess.

1.1 — Correction: access measures were projected linearly and overshot

2026-07-25

correction method All 54 countries

Electricity access and internet use were extrapolated linearly in percentage points per year, clamped at 100. This drove Ghana, Egypt and South Africa to a flat 100% internet use by 2031 — a level no country on earth has recorded.

Adoption saturates: the last stretch of any population is the hardest to reach. Replaced with a gap-closure model that approaches a ceiling and never reaches it, with ceilings of 100% for electricity access and 98% for internet use.

Raised by: Review by Hannah Kwakye, who identified that the displayed figure did not match Ghana's real internet penetration.

Superseded projection preserved — GHA, Internet use
Version20312036
Was (withdrawn)100%100%
Now86.2%91.2%

Measured value at the time of correction: 72.2% (2024).

correction interface Interface

Two map lenses were both labelled "Internet use" — one projected, one measured.

The ambiguity allowed a 2036 projection to be read as a present-day measurement. Projected lenses are now suffixed, option groups are labelled PROJECTED and MEASURED, the map caption states which is on screen, and hovering a country under a projected lens shows the measurement it was derived from directly beneath it.

expansion data

Shipped indicator history extended from 2000 to 1990 — up to 36 years per country.

Raised in review as a concern that the platform relied on a single recent year. Scenario bands were already fitted over 15 years; the shipped series are now longer, and the method page publishes the full latest-observation distribution across all 74 series.

1.0 — First edition

2026-07-24

addition all All 54 countries

Initial publication: 54 countries, 74 indicator series, three scenarios to 2031 and 2036, equal-area atlas, continental systems layer, and a static brief per country.

Establish a transparent, evidence-grounded baseline that never fabricates, and an architecture built for continued enrichment.

What this does not yet do

Forecast accuracy scoring is not yet running. The honest position is that the 2031 paths published here cannot be evaluated until 2031 arrives, and the mechanism for scoring them against outturns — without retroactively editing what was originally published — is designed but not built. When it exists, it will appear on this page.

Build identifier

This is build see /build.json, edition 6.2.4. The machine-readable version, including the content hash of every script and stylesheet this build serves, is at /build.json.

Asset filenames contain a hash of their contents, so a change of bytes is always a change of URL. If a browser is running old code, its address will not match the one in build.json — which makes a stale cache visible instead of leaving it to be inferred from behaviour.