SYZNNCasablanca Stock Exchange — end-of-day board and issuer dossiers
Institution
Menu
Menu

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

F01Production source not reproducible from GitHub mainFIXED_IN_BUILDrecovered 2026-10-29 from Cloud Shell: branch archive/prod-2026-05-19 at 8bef192; 6/6 comparable files hash-identical to the Vercel upload
F02Price publication stopped after 2026-05-15DETECTEDroot 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
F03Freshness controls disagree across surfacesFIXED_IN_BUILDone server-owned verdict per request (truth/freshness.ts)
F04Sync date substituted for trade dateFIXED_IN_BUILDonly trade_date feeds the verdict; no price in metadata
F05Substring-based news attributionFIXED_IN_BUILDresolver@1 exact alias; DB ticker_to_mentions comma split fixed 2026-10-29 (232 → 0 rows); upstream substring tagging remains in the writer
F06Source tier used as verificationFIXED_IN_BUILDis_verified is not read by v4
F07Missing relations masked as empty listsFIXED_IN_BUILDfeed-state taxonomy; PGRST205 → CONTRACT_MISMATCH
F08Incomplete trilingual parity, html without langPARTIALlang/dir set; AR copy pending named human reviewer
F09Anonymous writes on syznn_news_reactionsFIXED_IN_BUILDpolicies dropped and INSERT/UPDATE/DELETE revoked 2026-10-29 (verified); default TRUNCATE/TRIGGER/REFERENCES grants remain, not reachable via the API
F10cse_tickers ISINs contradict the bulletinFIXED_IN_BUILD16/16 checkable ISINs wrong; registry v1 proves identity from prices
F12Incomplete TLS chain on casablanca-bourse.comDETECTEDleaf-only chain breaks curl/requests/httpx; pinned Sectigo DV R36 intermediate restores verified access (ops/tls)
F13XCAS calendar unverifiedFIXED_IN_BUILD2026 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)
F14Two competing price tables, neither write-timestamped for the boardDETECTEDcse_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)
F15Official bulletins not retrieved for five sessionsDETECTED2026-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
F16No versioned re-evaluation for the append-only bulletin recordDETECTEDxcas_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)
F17Reference-price date read as the last trade dateFIXED_IN_BUILDthe 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)
F11AMMC titles truncated by the collectorDETECTEDflagged per entry; collector fix needed on Harvest
IA01Exchange data reuse rights not yet qualifiedDETECTEDindependent 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
IA02Admission does not enforce every published checkIN_REMEDIATIONindependent 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
IA03A reconciled total does not validate every valueIN_REMEDIATIONindependent 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
IA04Partial notary coverageIN_REMEDIATIONindependent 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 rootIN_REMEDIATIONindependent 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
IA06Freshness and missing data treated as availableIN_REMEDIATIONindependent 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
IA07The review checker matches numbers, not assertionsIN_REMEDIATIONindependent 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
IA08The review score is not a probability of accuracyIN_REMEDIATIONindependent audit 2026-10-29: it is the verified share of declared claims; the author controls which claims are declared. Renamed and reported with coverage
IA09Publication does not yet depend on a human reviewIN_REMEDIATIONindependent 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
IA10Oracle guards can be bypassedIN_REMEDIATIONindependent 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
IA11Data classes not enforced on every routeIN_REMEDIATIONindependent 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
IA13Research figures cited outside their populationIN_REMEDIATIONindependent 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
IA14Observed calendar treated as settled factIN_REMEDIATIONindependent 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
IA15Macro exposure: missing data read as zeroIN_REMEDIATIONindependent 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
IA16DQI release depends on the clock onlyIN_REMEDIATIONindependent 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
IA17An unverified reply can lift a dispute holdIN_REMEDIATIONindependent 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
IA18Contact-form cap can be exhaustedIN_REMEDIATIONindependent 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
IA19API quotas not atomicIN_REMEDIATIONindependent audit 2026-10-29: concurrent calls can exceed a budget and some data functions do not debit quota. Paid API launch deferred until fixed
IA20Oracle misses notices through an identity mismatchIN_REMEDIATIONindependent audit 2026-10-29: notices are stored by bulletin label but queried by ISIN
IA21Source-register evidence is partialDETECTEDindependent 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
IA22Planned history exceeds read limitsIN_REMEDIATIONindependent 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
IA28Arabic and accessibility acceptance incompleteDETECTEDindependent 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
IA29Daily operation not yet demonstratedDETECTEDindependent audit 2026-10-29: bulletins are still loaded manually; scheduling waits for the admission fix, then independent freshness alerts
IA32Exchange clock one hour aheadFIXED_IN_BUILDindependent 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