Data status
What SYZNN knows, since when, and what it does not know. Measured on every request, never copied forward.
Historical prices — not current
Last session published by SYZNN: 28 Oct 2026. At least one session has taken place since without publication. The figures below describe that past session.
End-of-day prices Not current
- Session
- 28 Oct 2026
- expected
- 29 Oct 2026
- Δ
- Sessions missed: 1 to 1
- Priced at session
- 77/77
- SHA-256
- 77/77
- reason
- PAST_SLA
AMMC publications Current
- Last collection
- 29 Oct 2026, 18:31 (Casablanca, UTC)
- age
- 21.0 h ago (SLA 36 h)
- Attributed
- 457/591
- Needs review
- 23
Press Current
- Al Jazeera EN
- 30 Oct 2026, 12:00 (Casablanca, UTC)
- Al Yaoum 24
- 29 Oct 2026, 18:01 (Casablanca, UTC)
- AMMC
- 29 Oct 2026, 18:31 (Casablanca, UTC)
- Assabah
- 28 Oct 2026, 06:00 (Casablanca, UTC)
- BBC Arabic
- 30 Oct 2026, 12:00 (Casablanca, UTC)
- BBC Business
- 30 Oct 2026, 12:00 (Casablanca, UTC)
- FT Emerging Mkts
- 30 Oct 2026, 12:00 (Casablanca, UTC)
- Hespress
- 30 Oct 2026, 06:00 (Casablanca, UTC)
- La Vie Éco
- 30 Oct 2026, 06:00 (Casablanca, UTC)
- Les Éco
- 29 Oct 2026, 18:01 (Casablanca, UTC)
- NPR Economy
- 30 Oct 2026, 12:00 (Casablanca, UTC)
- OilPrice.com
- 22 Oct 2026, 18:01 (Casablanca, UTC)
Official exchange bulletins Current
195 of 201 expected sessions admitted since 31 Dec 2025. Every price links to the official PDF and its SHA-256 fingerprint. The sessions shown were admitted under the original policy, where 6 of 11 checks decided admission and the others (including volume reconciliation) were only diagnostics. A versioned policy (bcfr-gates@2), in which every mandatory check decides and sessions already admitted are re-evaluated, is built but not yet applied (IA02).
Sessions without a verified bulletin (published, not hidden)
- 5 Oct 2026 · bulletin not found at its official address URL ↗
- 17 Sept 2026 · bulletin not found at its official address URL ↗
- 3 Jul 2026 · bulletin not found at its official address URL ↗
- 2 Jul 2026 · bulletin not found at its official address URL ↗
- 1 Jul 2026 · bulletin not found at its official address URL ↗
- 30 Jun 2026 · bulletin not found at its official address URL ↗
History continuity
678 published sessions between 2 Jan 2024 and 28 Oct 2026 (reference instruments IAM, ATW, BCP).
- 22 Jul 2024 → 26 Jul 2024: 5 to 5 sessions
- 3 Apr 2025 → 3 Apr 2025: 1 to 1 sessions
- 19 Jun 2026 → 19 Jun 2026: 1 to 1 sessions
- 23 Jun 2026 → 23 Jun 2026: 1 to 1 sessions
- 30 Jun 2026 → 3 Jul 2026: 4 to 4 sessions
- 16 Sept 2026 → 17 Sept 2026: 1 to 2 sessions
- 5 Oct 2026 → 5 Oct 2026: 1 to 1 sessions
Instrument registry
77 instruments; ISINs proven by close-price agreement; 12 legacy symbols excluded.
syznn.xcas.instruments@1.1.0 · resolver@1.0.0 · ammc-classifier@1.0.0
Known defects being worked
| F01 | Production source not reproducible from GitHub main | FIXED_IN_BUILD | recovered 2026-10-29 from Cloud Shell: branch archive/prod-2026-05-19 at 8bef192; 6/6 comparable files hash-identical to the Vercel upload |
| F02 | Price publication stopped after 2026-05-15 | DETECTED | root cause proven on Harvest 2026-10-29: crontab v2.0 (2026-04-02) runs `source` under dash, so ~10 jobs died silently from 2026-04-03; since 2026-08-06 the adapter also targets the retired media. host (bulletins moved to www.); BCFR v3 (harvest/bcfr) re-acquires every session from the official PDF with gates; repair order WO-R1 awaits approval |
| F03 | Freshness controls disagree across surfaces | FIXED_IN_BUILD | one server-owned verdict per request (truth/freshness.ts) |
| F04 | Sync date substituted for trade date | FIXED_IN_BUILD | only trade_date feeds the verdict; no price in metadata |
| F05 | Substring-based news attribution | FIXED_IN_BUILD | resolver@1 exact alias; DB ticker_to_mentions comma split fixed 2026-10-29 (232 → 0 rows); upstream substring tagging remains in the writer |
| F06 | Source tier used as verification | FIXED_IN_BUILD | is_verified is not read by v4 |
| F07 | Missing relations masked as empty lists | FIXED_IN_BUILD | feed-state taxonomy; PGRST205 → CONTRACT_MISMATCH |
| F08 | Incomplete trilingual parity, html without lang | PARTIAL | lang/dir set; AR copy pending named human reviewer |
| F09 | Anonymous writes on syznn_news_reactions | FIXED_IN_BUILD | policies dropped and INSERT/UPDATE/DELETE revoked 2026-10-29 (verified); default TRUNCATE/TRIGGER/REFERENCES grants remain, not reachable via the API |
| F10 | cse_tickers ISINs contradict the bulletin | FIXED_IN_BUILD | 16/16 checkable ISINs wrong; registry v1 proves identity from prices |
| F12 | Incomplete TLS chain on casablanca-bourse.com | DETECTED | leaf-only chain breaks curl/requests/httpx; pinned Sectigo DV R36 intermediate restores verified access (ops/tls) |
| F13 | XCAS calendar unverified | FIXED_IN_BUILD | 2026 verified from the exchange (data/calendars/xcas-2026.json); expires 2027-01-01; legal time from decree 2.26.530 (GMT from 2026-09-20; the clock wrongly added an hour until audit F32, fixed 2026-10-29) |
| F14 | Two competing price tables, neither write-timestamped for the board | DETECTED | cse_prices (ISIN, frozen 2026-03-19) and cse_prices_daily (ticker, frozen 2026-05-15, no timestamp column, so invisible to the atlas freshness survey); col_confidence null on 100 % of rows in both; consolidation: one ISIN-keyed receipted table (supabase/proposals/0003) |
| F15 | Official bulletins not retrieved for five sessions | DETECTED | 2026-06-30, 07-01, 07-02, 07-03 and 10-05: absent from the exchange listing when we looked and 404 under every URL variant tried. That is a retrieval fact, not proof that a bulletin was never published. A provisional reading that trading occurred (on the next retrieved session the index changes and reference prices start from a session we never received: 0/31 and 1/31 indices chain to the last retrieved bulletin; 6/63 and 8/67 reference prices) awaits exchange confirmation; 07-02 has no such witness. 2026-09-17 is a separate case: the exchange notice index lists AV-2026-126 dated 2026-09-17 (cancellation of transactions) and its 2026-09-18 release reports a technical incident and resumption; both price chains are intact across the day. It is reconciled with that notice, not counted as an ordinary missing session; its append-only xcas_bulletins row still reads MISSING_SESSION until versioned re-evaluation (F16). Gaps are filled from secondary sources only with provenance marked secondary |
| F16 | No versioned re-evaluation for the append-only bulletin record | DETECTED | xcas_bulletins keeps the verdict of the parser that first read a session (correct); a better parser (bcfr-v3.2.0 now reconciles the 2026-07-08 in-kind contribution section) needs an xcas_reevaluations table keyed by (session, parser_version) |
| F17 | Reference-price date read as the last trade date | FIXED_IN_BUILD | the bulletin date next to the price reads as the session from which the reference price applies: 98.9 % of 14,975 checkable rows are the next archived session after the previous trade (14,772 when recorded missing dates are counted as sessions). This is a provisional interpretation offered to the exchange for confirmation. Column documented and public.xcas_last_trade_v derives the last traded session (migration 0016, 2026-10-29); no published figure used the column. The date does not prove that a session took place (F15) |
| F11 | AMMC titles truncated by the collector | DETECTED | flagged per entry; collector fix needed on Harvest |
| IA01 | Exchange data reuse rights not yet qualified | DETECTED | independent audit 2026-10-29: P0 legal exposure: the exchange terms restrict reproduction and reserve rights in derived information; no applicable written permission is on file. A written position has been requested; no exchange value is sold; a rights decision by counsel is a release condition |
| IA02 | Admission does not enforce every published check | IN_REMEDIATION | independent audit 2026-10-29: the terminal verdict uses gates A–F; G, H, I and K are diagnostics. Three retrieved bulletins are PASS with a failed diagnostic gate (07-06 and 10-06 reference chain, 07-08 ladder; the 07-08 ladder was withheld from volume). Fix: versioned mandatory-gate policy and re-evaluation of existing rows |
| IA03 | A reconciled total does not validate every value | IN_REMEDIATION | independent audit 2026-10-29: a within-range wrong price, an empty ladder or duplicated rows can pass the current gates. Fix: section coverage, unique keys and per-field binding to the source location; where no scalar check exists, the limitation is stated |
| IA04 | Partial notary coverage | IN_REMEDIATION | independent audit 2026-10-29: the single root covers 95 of 195 retrieved PASS bulletins (plus 95 instructions files) and commits document fingerprints only, not extracted rows or calculations; OpenTimestamps calendar receipts are not yet independently verified as final. Fix: full coverage and an extraction manifest per session |
| IA05 | /verify can show a favourable verdict with an invalid root | IN_REMEDIATION | independent audit 2026-10-29: an official-document match with a root that does not recompute still headlines OFFICIAL_CURRENT; a notary-only match is also labelled official. Fix: separate states for source match, authority, currency, inclusion and timestamp |
| IA06 | Freshness and missing data treated as available | IN_REMEDIATION | independent audit 2026-10-29: a reachable but frozen source can read as live; a missing volume record can read as zero trading; sessions without a bulletin drop out of the series. Fix: coverage-aware freshness on every route |
| IA07 | The review checker matches numbers, not assertions | IN_REMEDIATION | independent audit 2026-10-29: sign reversal, a second unsupported number, an author-chosen tolerance or a provenance-only source can pass. The review ledger is not deployed and nothing has been published through it. Fix: typed assertions |
| IA08 | The review score is not a probability of accuracy | IN_REMEDIATION | independent audit 2026-10-29: it is the verified share of declared claims; the author controls which claims are declared. Renamed and reported with coverage |
| IA09 | Publication does not yet depend on a human review | IN_REMEDIATION | independent audit 2026-10-29: the weekly-report publisher does not require a reviewed body hash or an authenticated sign-off, and the proposed review migration trusts writer-supplied counts. No report has been published. Fix: one database-enforced publication step bound to the exact reviewed text |
| IA10 | Oracle guards can be bypassed | IN_REMEDIATION | independent audit 2026-10-29: in local tests 27 of 30 adversarial advice requests were not caught and 8 of 8 crafted advice answers were accepted; answers are not yet bound to subject and field. Paid launch deferred |
| IA11 | Data classes not enforced on every route | IN_REMEDIATION | independent audit 2026-10-29: the markets page, /api/v1/markets and oracle retrieval serve class C price levels the profile withholds; return and dividend yield labelled B can reconstruct a price with one public input. Fix: one policy at every output |
| IA13 | Research figures cited outside their population | IN_REMEDIATION | independent audit 2026-10-29: several headline figures (concentration, off-book share, autocorrelation, USD correlation, RSI bands) reproduce for June–October only, not 2026 to date; the CBAM share is calendar 2025. Restated with their period; causal readings withdrawn |
| IA14 | Observed calendar treated as settled fact | IN_REMEDIATION | independent audit 2026-10-29: inferred closures can remove an expected session and yield FRESH; they need an authority level, and freshness returns UNKNOWN when an unconfirmed closure decides it |
| IA15 | Macro exposure: missing data read as zero | IN_REMEDIATION | independent audit 2026-10-29: a missing product series can yield zero CBAM exposure, an exclusion without its parent a negative value, and an unknown licence is displayable. The 2024 mirror-gap change is an unexplained discontinuity under investigation, not a confirmed reporting break |
| IA16 | DQI release depends on the clock only | IN_REMEDIATION | independent audit 2026-10-29: the 2026-11-20 release checks time and holds, not delivery of the notices or completion of review. No score is visible today. Fix: release requires delivery receipts, the full reply window and a review record |
| IA17 | An unverified reply can lift a dispute hold | IN_REMEDIATION | independent audit 2026-10-29: reproduced on a local copy of the schema: an unverified right-of-reply child makes a held parent public, and held events expose moderation notes. Production holds no submissions. Fix: verified authority before any release; events follow parent visibility |
| IA18 | Contact-form cap can be exhausted | IN_REMEDIATION | independent audit 2026-10-29: the submit function bypasses the page spam guards and a shared daily cap can block a legitimate right-of-reply message. Fix: atomic budgets and reserved capacity for replies and corrections |
| IA19 | API quotas not atomic | IN_REMEDIATION | independent audit 2026-10-29: concurrent calls can exceed a budget and some data functions do not debit quota. Paid API launch deferred until fixed |
| IA20 | Oracle misses notices through an identity mismatch | IN_REMEDIATION | independent audit 2026-10-29: notices are stored by bulletin label but queried by ISIN |
| IA21 | Source-register evidence is partial | DETECTED | independent audit 2026-10-29: 11 of 49 outlets have both an affiliation evidence page and its hash; 30 are UNKNOWN and 6 NOT_ASSESSED by policy. Coverage is stated, not claimed as complete |
| IA22 | Planned history exceeds read limits | IN_REMEDIATION | independent audit 2026-10-29: 2021–2025 sessions are parsed but not loaded; current readers stop at 20,000 rows. The load waits for bounded reads |
| IA28 | Arabic and accessibility acceptance incomplete | DETECTED | independent audit 2026-10-29: Arabic copy is a draft pending native review; one light-theme chart label is 3.51:1 against the 4.5:1 minimum; full mobile and assistive-technology checks are pending |
| IA29 | Daily operation not yet demonstrated | DETECTED | independent audit 2026-10-29: bulletins are still loaded manually; scheduling waits for the admission fix, then independent freshness alerts |
| IA32 | Exchange clock one hour ahead | FIXED_IN_BUILD | independent audit 2026-10-29: Morocco returned to GMT on 2026-09-20 (decree 2.26.530); the clock follows it in this build; Ramadan transition instants are being corrected |