Gyronomics.
ΕΛ

Changelog

Everything new or changed in Gyronomics, from launch to today. Only changes that affect visitors.

Each entry describes the state as it was on its own date. Figures and claims in older entries may have been corrected by newer ones - for the current picture see the data releases page. Data releases

  1. Improvementv2026.10.10-monthly-bulletin

    The monthly bulletin earlier from November

    • New bulletin calendar from the November data: working day 2 after the last eligible reading day. October stays on 4 November 2026.
    • Next dates: 1 December 2026, 30 December 2026, 1 February 2027, 2 March 2027, 30 March 2027.
    Read the full entry

    Monthly bulletin calendar change, announced on 10 October 2026. The October 2026 issue stays on Wednesday 4 November 2026, as announced. From the November 2026 data each issue comes out 2 working days after the month's last eligible reading day (days 25 to 28, a weekday that is not a holiday), instead of working day 3 of the following month. New dates, old ones in brackets: November 2026 → 1 December 2026 (3 December), December → 30 December 2026 (7 January 2027), January 2027 → 1 February 2027 (3 February), February → 2 March (3 March), March → 30 March (5 April), April → 4 May (6 May), May → 1 June (3 June), June → 30 June (5 July), July → 30 July (4 August), August → 31 August (3 September), September 2027 → 30 September 2027 (5 October). Why: in the October plan, from the reading on 26 October to release on 4 November, the 9 days are almost all calendar waiting, while a reading takes about 95 minutes. At least one full working day always separates the last possible reading from the release. Readings take place on the first eligible day at about 08:45, as for the 25 September base. The /api/public/bulletin.json API has a new release_rules field giving the month each rule takes effect from. The old release_rule.working_day stays and covers the October 2026 data only. The issue catalogue moves to schema v2. On the September issue page only the calendar texts change: the rule, and the date of the first annual change, now 30 September 2027 instead of 5 October 2027. The issue files are unchanged (same SHA-256). Labour Day 2027 falls on Holy Saturday: if it is moved, the April issue will need an announced calendar correction.

  2. Improvementv2026.10.09-what-holds

    What holds: how EUR 4.30 is made, rules before the data, a publication register

    • The 2026 page shows how EUR 4.30 is made: CPI projection EUR 4.45, evidence blend EUR 4.12, weight 1/2. The weight is now a recorded decision.
    • The reproduction package rebuilds the price of all 51 years. Until now 10 prices could not be rebuilt from the public file.
    • The Eurostat check also shows the price and index a new month would give.
    • October's measurement rules are published before the data: a 95% interval, no reading on a public holiday, a rules file with SHA-256.
    • The consistency check also scans head meta, and every card leaves a record of what it printed.
    • Every publication goes into a register, and a check every 6 hours finds which commit the site serves.
    • Measurement rules v2 before October's data: an exact interval for each city's median from its businesses, only with 6 or more.
    Read the full entry

    Every publication of the site now goes into a register: which code, which data version and which checks passed. The register starts with 9 publications from 13.9.2026. The first 8 were back-filled from our notes, only where the notes recorded the identity of the code. The reason: on 6.10.2026 code with library upgrades went live without a recorded check result, and on 9.10 our notes still said no publication had happened. A check every 6 hours now finds which commit the site is serving. It fails if that commit did not pass the automated checks, or if it was not added to the register within 24 hours. It does not fail because the code being prepared is ahead of the site. The Index figures do not change. The consistency check now also scans head meta: the title, description and alt of every page, and the title and description of every article. A gyro count, a price or a base-100 value that names no year of its own must be the latest year's figure. Every card that prints series figures leaves a record of what it printed, and the build compares it with the series. Numbers written as words, such as "four came back" and "three-year change", are tied to the series too. The 2026 page now shows how EUR 4.30 is produced. The catering CPI projection gives EUR 4.17 × (1 + 6.7%) = EUR 4.45. The blend of the evidence is EUR 4.12 (ANT1: 34.6%, enikonomia.gr: 26.9%, Gyronomics: 38.5%). Their mean with weight 1/2 is EUR 4.28. Then come the source range of EUR 3.70-5.00, the no-fall floor of EUR 4.17 and the EUR 0.05 step. The same breakdown appears for the other nine sticky and soft-anchor years (2012-2019, 2022). For 2013 and 2014 it also says that catering CPI was -2% and -1.8%, while the projection was held at 0%. The 1/2 weight was added on 30 Aug 2026 without a recorded decision. It is now a recorded decision until the modern methodology release. With weight 0, 2026 would be EUR 4.45 and 207; with weight 1, it would be EUR 4.15 and 222. The live Eurostat check now also shows the price and index the series would give with Eurostat's mean, using the same code as the series. Today that is EUR 4.30 and 214. The new release the check asks for with each new month therefore announces its result in advance. The reproduction package now rebuilds the price of all 51 years from the anchors, the rates and the price trace. Until now 10 prices could not be rebuilt from the public file: 2012-2019, 2022 and the EUR 4.30 of 2026. The original documents remain outside reproduction, as before. The October measurement rules are published before the data, in a file with the thresholds, the holidays and the eligible days. The monthly rate will carry a 95% interval. "Increase" or "decrease" will be written only when the interval excludes zero. On the 8.9 → 25.9 rehearsal the interval was +0.18% to +0.34%. The same business on two platforms does not count twice in the interval. City medians also get an interval, together with the number of distinct shops behind the figure. This matters because with few shops the interval comes out artificially narrow. In September, 17 of the 41 cities with fewer than 10 listings would have had a zero-width interval. No regular measurement on a public holiday. October is read on the 26th or 27th (the 28th is a holiday), December only on the 28th, and March 2027 only on the 26th. If a month is missed, the next change is published as a two-month change, with no estimate for the missing month. The Calculator loaded 1,102,181 bytes of JavaScript, over its 1,100,000 limit, already after the library upgrade of 6 October, and this release added another 16.7 KB. The address checks of seven pages (/psalida, /prices, /data, /gyro-index, /embed, /widget, /press) and of /releases loaded whole page modules on every page, including the catalogue of data archives. They moved to small modules. The Calculator fell to 1,088,584 bytes and every other page is smaller than before this release (the Index 1,211,538 from 1,214,608). The limit did not change. October measurement rules, version v2, written before the reading of 26 or 27 October. The 95% interval of each city's median becomes exact, from the ordered prices of businesses, instead of a bootstrap. The same business on two platforms counts once, and the interval is published with its businesses and its exact coverage. Below 6 businesses no interval is published: the city keeps its median and its shop count, with a flag. On September's data the bootstrap gave a single-point interval in 22 of the 78 cities. The new rule gives an interval in 48 cities and a flag in 30. The rate keeps the platform-combination strata, and a new test shows that a move of a whole platform does not widen its interval. rules-2026-10-v2.json changes rule 11 only. v1 stays public and unchanged. The sources of the country comparison were archived on 9 October 2026: 36 files (statutes, Eurostat, Destatis, GKV-Spitzenverband, YouGov, BOE, Diário da República), each with its address, retrieval time and SHA-256. Some addresses did not return the document: three PDFs of the German Federal Law Gazette answered with a page shell, one page gave a 503 error, and two links of the Portuguese social security led to the site's home page. These were not kept as evidence. They are listed with the reason, and official copies took their place. New checks recompute every hash and find every quote in the archived text. They also rebuild the German wage, the index and the figures in the caveats from the archive. The consistency gate went from 960 to 975 checks. The regular live check now accepts only the exact name of the new script, not its whole folder. It fails if screen or click recording is turned on or if the data is sent elsewhere. It also fails if the script itself stops keeping those settings off when none are given. It now reads script tags the way a browser does. Until now an unquoted src, or a data-src after the src, passed the check as clean. A change to the script's settings that would make the Privacy page false therefore breaks the check.

  3. Improvementv2026.10.04-gyro-eur

    Platform B limit-window test and October preparation

    • The limit test ran with 150 reads, no refusal, and a window under about 3 minutes.
    • Incomplete, with no change to any price or rate. The regular measurement is proposed for 26 October.
    Read the full entry

    The test of the platform B product-detail limit window ran on 4 October, since it had not run on 1-3 October. Six of the seven blocks of 25 reads completed, with pauses up to 40 minutes: 150 requests, all HTTP 200, no rate-limit refusal and no limit header. The block after the shortest pause (2 minutes) read all 25, so the window is shorter than about 3 minutes. The test is incomplete, because the tool stopped the process at two hours before the 80-minute block, and it is not repeated, since the conclusion would not change. The exact window and whether the limit is a fixed window or a bucket were not determined. The October collection was also prepared: a new folder with no reads and a pre-check of the three readers, with the robots.txt files unchanged since 25 September. The regular measurement is proposed for 26 October. The Index, the prices and the monthly rates do not change.

  4. Improvementv2026.09.28-1984-press-followup

    Year comparisons, evidence and press research

    • A clearer chart, optional lines, two-year comparison and mobile year controls.
    • Comparison links and language changes retain the unit, scenario and both years.
    • The text layers of 36 Simaia pages from September through November 1984 were screened.
    • Complete originals and visual review identified three unrelated orders on olive oil, yoghurt and books.
    • No wrap price was accepted, the series is unchanged and 21 records remain in this catalogue intersection.
    • Visual review of twelve pages from three older complete issues resolved their catalogue mismatches without a new price.
    • All 216 monthly payroll evidence cells are now public: 114 A, 102 B and 0 U, with a 30-source catalogue and strict reproduction-bundle checks.
    • Rereading Gazette B 115/1982 withdrew the unsafe May–August 1984 upgrade; evidence-only changes no longer move the graphics' numeric archive.
    • The full 1997 image identifies the 200-GRD item as a bare skewer; the retrospective 180–220-GRD 1998 pita-gyro claim is sensitivity-only and the series is unchanged.
    • 1982 has the widest remaining index band at 628–1,310; visual review of twelve pages found no new price and does not arbitrarily narrow the ±35% range.
    • A second 6 June 1981 newspaper corroborates a wholesale-price formula announcement, not the order or an absolute 1982 price; the band remains unchanged.
    • The exact 10.4 and 12.2 coefficients are attributed to Market Order 14/1989 and are not carried backwards into the unknown 1981 formula or 1982.
    • A complete visual review of 18 Patris pages dated 7–11 June 1981 found no order or price; the negative result is limited to those four issues.
    • No digitized 1981 file was identified, and the central holding found begins in 1983.
    • The archive route now targets `GRGSA-MAG ADM22.2` and `GRGSA_LAR ADM004.01`, which cover the dates and explicitly name market-order material; a request was drafted but not sent.
    • Original Messinia Order 13/1985 repeals Orders 15/1984 and 7/1985, not the sought 12/1984; a separate request to the Messinia archive was drafted but not sent.
    • Calculator loading and the final mobile chart-year label were corrected.
    Read the full entry

    The catalogue intersection for `σουβλ*` and `αγορανομ*` contained 30 unread 1984 issues. The latest nine and all 36 of their pages were screened. For the three issues containing a substantive order reference, the complete original was retrieved and page 1 was visually reviewed. Order 40/1984 concerns olive-oil inventories and four months of stable prices, Order 16/1984 amends 6/1984 and sets sheep-milk yoghurt prices of 24, 32 and 63 drachmas, and Order 56/1984 concerns book-trade profit margins. None is the target Order 12/1984 or gyro-wrap price evidence. The other matches are directory entries, dates and advertisements without an established absolute price or wrap identity. Three older complete issues with catalogue-text mismatches were also retrieved and all twelve pages were visually reviewed. One `σουβλ*` match was spit-roasted chicken rather than a wrap; the other two catalogue mentions were not found in the originals. No observation is added, the series is unchanged and 21 issues remain unread. The request to the Messinia archive remains prepared but was not sent. The Index opens with the selected series and its range. Wage or price is optional on a separate right-hand euro axis, and other paths are enabled explicitly. Two-year comparison follows the selected unit and scenario, calculates percentages before integer rounding and preserves choices in links and language changes. Mobile controls now include a year selector, previous/next and direct source links. The 1984 research test verifies the 21 genuinely open issues instead of assuming undocumented completion. Unpublished additions prepared on September 27 are recorded today, preserving the previous day's published notes. The 1981 calendar, previously recovered in separate tax research, is now included in payroll research scenarios. August–October retain grade A as continuations of the original July change; November–December remain grade B because the original ministerial decision is unrecovered. Two original gazettes establish the Christmas 1980 and Easter 1981 bonus fractions. Payment convention and OEK treatment still require a decision before changing the series. Seven deliberate errors were rejected by the checks and independent arithmetic reproduced the results. Offline October preparation verified dates, the comparison baseline, frozen reports and three raw-data backups without new collection. The tool's completion message no longer assumes the absence of a monthly rate. Setup instructions and consolidated project status were updated, preserving older notes as history. On the Index page, the heavy interactive Recharts view was removed from the initial static closure and now loads as it approaches the viewport. Headline results and the complete accessible table remain in the initial HTML, while a fixed-height bilingual status avoids layout shift. The new check failed first without the dynamic boundary and now protects the split. Later, the APIs published 216 monthly evidence cells (114 A, 102 B, 0 U), every B was mapped to an open question and the 38,521 OCR was corrected to the visually confirmed 38,251 in two INE reports. The shared catalogue maps all 30 source IDs, with 24 public HTTPS URLs and six explicit unresolved public copies. Visual rereading of Gazette B 115/1982 corrected the interpretation: article 7 rounds seniority and marriage amounts, not expressly every ATA adjustment. The May 1984 amount of 28,876 is therefore insufficient without an application table or explicit amount, and May–August return to B. The graphics' numeric archive identity now ignores this documentary overlay and is protected by a bitten test. The remaining interpolated years are now ranked from the production series: 1982 is first at 628–1,310, width 682, and 1985 second at 611–1,277, width 666. Visual review of twelve pages in three retained 1982 issues found no eligible wrapped-product price. The negative result applies only to those issues, does not narrow the ±35% band and changes no series figure. A second contemporary paper, Ipeirotikos Agon of 6 June 1981, corroborates that a wholesale-price-based souvlaki formula and a forecast 2–3 GRD rise were announced. Together with Rizospastis it dates the announcement to 1981, but it does not supply the operative order, coefficients, exact product, geography or continuity into 1982. Article 201 explicitly attributes the exact 10.4 and 12.2 coefficients to Market Order 14/1989, so they cannot be carried backwards into the unknown 1981 formula or 1982. Complete visual review of 18 pages in the available 7, 9, 10 and 11 June Patris issues found no order, formula, coefficient or price. That negative result is limited to those issues. No absolute price follows and the 628–1,310 band remains unchanged. A separate branch recovered original Messinia Order 13/1985, protocol EM 1281, on cafe items. It repeals Orders 15/1984 and 7/1985, not 12/1984, and provides no gyro-wrap product or price. The finding narrows the unsent Messinia archive request to Orders 12/1984 and 15/1984 plus the 1984 order register. The browser check found an initial JavaScript budget regression on the Calculator. Payroll URL validation was separated from the evidence catalogue without changing calculations or relaxing the budget. The clipped final chart-year label was corrected on mobile. The methodology check now follows the series’ already published payment convention instead of the old thirteen-payment assumption.

  5. Improvementv2026.09.27-payroll-readiness

    1981 research, documentation and October readiness

    • The 1981 payroll research was completed and two original bonus gazettes were recovered, with uncertainties retained.
    • October's baseline and September backups were verified; project instructions were updated.
    • The Index chart now loads near the viewport while the complete table and headline results stay in the initial HTML.
    • The later same-day payroll change is recorded in the separate correction entry.
    • All 216 monthly payroll evidence cells are now public: 111 A, 105 B and 0 U, with strict reproduction-bundle checks.
    • Shared press-graphic export helpers were separated from the heavy press page, keeping the article bundle within budget.
    Read the full entry

    The 1981 calendar, previously recovered in separate tax research, is now included in payroll research scenarios. Five completed months retain grade B: the two newspapers cite APE and the original ministerial decision remains unrecovered. Two original gazettes establish the Christmas 1980 and Easter 1981 bonus fractions. Payment convention and OEK treatment still require a decision before changing the series. Seven deliberate errors were rejected by the checks and independent arithmetic reproduced the results. Offline October preparation verified dates, the comparison baseline, frozen reports and three raw-data backups without new collection. The tool's completion message no longer assumes the absence of a monthly rate. Setup instructions and consolidated project status were updated, preserving older notes as history. On the Index page, the heavy interactive Recharts view was removed from the initial static closure and now loads as it approaches the viewport. Headline results and the complete accessible table remain in the initial HTML, while a fixed-height bilingual status avoids layout shift. The new check failed first without the dynamic boundary and now protects the split. Later, the APIs published 216 monthly evidence cells (111 A, 105 B, 0 U), every B was mapped to an open question and the 38,521 OCR was corrected to the visually confirmed 38,251. No series figure changed.

  6. Improvementv2026.09.26-mean-wage-source

    Gyros as a word of its own, before the October measurement

    • Six helper classifiers aligned, an October guard before network access, and updated browser checks.
    • The classifier no longer mistakes gyromprizolaki for a gyro pita, or SANDWICHARA for a sandwich.
    • The second platform's detail read stays off in October, after the pilot.
    • The bare word pitogyro now counts as a wrap; a test of the second platform's limit is written for early October.
    Read the full entry

    COLLECTION, BEFORE OCTOBER: the classifier on all three platforms now accepts an item as gyro only when the word gyros (its forms, and pitogyro) stands on its own, not when the letters appear inside another word. Under the old rule two Athens records, most likely the same shop on two platforms, took their price from a pork gyromprizolaki sandwich at EUR 6.80. Measured on the frozen September data: 13 of 1,654 records would have no price, no price changes, and 2 of 78 city medians move, Heraklion EUR 5.30 to 5.25 and Sitia EUR 4.90 to 4.45. September is not republished; the rule applies from October. The pilot read of the second platform's product details stopped as designed at the 31st of 50: the platform allows about 30 per time window, so the read is not enabled in October. Same-day addition, by decision: kotogyros, pansetogyros and gyropita written as one word stay out, and SANDWICH counts as a wrap word only when it stands on its own. As a substring it gave a price to the EUR 15.00 SANDWICHARA chicken gyro in Ioannina. With both rules September would have had 14 of 1,654 records without a price; the Ioannina median stays EUR 4.20. The classifier change does not touch the Index. Afternoon addition, by decision: the bare word pitogyro now also counts as a wrap, as a word of its own with the same inflections the gyro rule recognises, so words such as kotopitogyro stay out. It occurs in none of the 189,814 September raw items, so the addition changes no row. The second platform's product details stay off in October. Its limit (about 30 details per unknown window) will be measured separately in early October, outside the 25-28 window, in blocks of 25 with 2 to 80 minute pauses; the test is written but has not run, and it also keeps the response headers that were missing on 25 September. No published number changes, including the Index. Research with no change to the series: the Christmas bonus decisions of 1977, 1978 and 1979 were found in the original gazette (B 1277/1977, 1081/1978, 1094/1979: one monthly salary, with the holiday allowance excluded from the base), and the Easter bonus decisions of 1977, 1979 and 1980 in Makedonia (half a salary). So every year 1976-1981 has 1.5 salaries of bonuses documented, while the series keeps 12 payments for 1976-1980 and 13 for 1981. The series does not change yet: moving 1976-1993 to the 12-month mean will come as a release of its own, with a before/after table. The same gyro, SANDWICH and PITOGYRO word rules now apply to the six helper readers and analysts, with an independent copy in each tool. The regular October collection refuses to start with GYRONOMICS_B_DETAIL=1, before network reads or registry writes. Browser checks that expected old indices, a pilot instead of the regular collection, and differences without their positive sign were corrected. September snapshots remain unchanged.

  7. Improvementv2026.09.25-september-collection

    The 2026 Index at 214: the year's wage and CPI from its months, a privacy page and form limits

    • The 2026 Index moves from 218 to 214. From 1994 the wage is the mean of 12 months, and 2026 food-service CPI the mean of Eurostat's months; 2026 is marked provisional.
    • New Privacy page: what each form keeps, what is public, what stays on your device and what the host's analytics send.
    • Submission limits on the contact and review forms too; the database sets the submission time.
    • An automatic check of the live site every 6 hours.
    Read the full entry

    The new Privacy page describes what exists, not intentions: each form's fields and who sees them (price reports and approved reviews are public), the two keys the site keeps in your browser, the 30-minute session-id cookie and what the host's analytics script sends, the processors (Supabase, Lovable, Cloudflare) and how to ask for access or deletion. A check fails if a form, key or external script is added without being declared there. Every form links to the page. In the database, the contact and review forms had no submission limit; they now allow 5 and 3 an hour. Limits also apply to signed-in accounts other than administrators, the sign-in page no longer offers account creation, and the database rather than the browser records the submission time, so a back-dated report cannot slip past the duplicate check. The limit counter keeps a hash of the IP address and deletes it after 24 hours. Finally, an automatic check reads the live site every 6 hours: key pages, error pages served with 200, a real 404, the service worker, the data version and scripts. The final build check failed in the publishing environment, which does not write the Cloudflare configuration file, so the publish never reached the site; it now checks the folder being published and confirms it is the output of the same build. For the first regular monthly price measurement, 25-28 September, the pre-check found all three platforms answering as the day before, and the collection now keeps the computer awake while it reads. And the methodology: until now the series kept the 1 January wage for 1994-2011 and the new wage after the change for 2012-2026, two conventions and neither the wage of the year. From 1994 the wage is now the mean of 12 months, with each month's contributions; for 2026 a mean gross of EUR 910 (January-March 880, April-December 920) and EUR 919.72 a month after contributions, with the bonuses spread over 12 months. The 2026 food-service CPI is the mean of Eurostat's months (January-August, 6.7%) instead of a 4.6% estimate, and the 2026 price moves from EUR 4.25 to 4.30. The 2026 Index moves from 218 to 214, level with 2025, the lowest of the series; 25 years change, none before 1994, and the 1983 peak (511) stays. 2026 is marked provisional until the year closes. The rules for the first monthly rate, in October, were also written ahead of the data: each shop against itself on all three platforms, only when the product keeps its id and no recorded field changed, with the stricter full-identity check beside it. Without changing any published figure, an optional read of the second platform's product details was prepared, the naming tables were rebuilt from the regular measurement (the 7 September article keeps its own data until the switch is decided), and three research files with primary sources were added: wages, bonuses and contributions 1976-1993, income tax in every year, and how to define the mean and median wage. Both books have a new 25 September edition with the new series; the 21 and 24 September editions remain available as they were.

  8. Improvementv2026.09.24-reader-corrections

    The full book in dated editions

    • Each edition of the full book has its own dated address and is never rewritten.
    • Old PDF links lead to the current edition.
    • Preparation for the first regular monthly price measurement, 25-28 September.

    The full book was tied to all of the site's code, so every change, even a footer link, required regenerating 359 pages, and the PDFs were rewritten at the same address. Now, like the short edition, each edition lives in its own dated folder and states the date and dataset version it came from. Addresses already shared lead to the current edition. The tools for the first regular monthly price measurement were also prepared: a rate limit that answered OK will no longer count as a shop without gyros, and September's publication rules were written before the data. No published figure changes.

  9. Improvementv2026.09.16-reproducible-views

    Lighter previews and a stable publication gate

    • Posters cite the archive that reproduces their figures, not today’s release.
    • Home shows thumbnails instead of the download files: 2,125 KB down to 217.
    • A new image-weight budget joins checks that measured JavaScript only.
    • The published-asset check no longer fails on a stopwatch.
    Read the full entry

    The three Home previews render at 313×208 and were downloading the 1536×1024 posters: 2,125 KB for three thumbnails. Each graphic now has two thumbnails, 384 and 768 wide, and the browser picks by screen: 217 KB at standard density, 651 at double. PNG and SVG downloads are unchanged, at full size and at the same addresses, and the collection under Numbers & stories shows the same images as before. Thumbnails carry the landscape composition's checksum in their name, so a new composition yields a new file; they are verified by SHA-256 against deployed bytes and carry their own weight budget. That budget was missing: the existing gates explicitly measured client code only, so image weight quadrupling on 16 September met no check. The published-asset check copied the whole graphics directory, 40.7 MB, while opening only the 32 catalogue files; both grew with every new composition until it passed the default timeout and failed the build at 5,343 ms against 5,000. It now copies what it reads and declares an explicit limit, with the reason written in, while the same corruptions are still rejected one by one and a corrupted thumbnail was added. Finally, environment files other than the tracked `.env` are explicitly ignored, so a local `.env.local` cannot leave with a commit. Posters printed the current daily release inside themselves and are content addressed, so every release that moved no figure rewrote all 48 of their files, 31.1 MB. They now cite the oldest immutable archive that reproduces the published series, today release 2026.09.14-historical-press, and a check recomputes every plotted point from that archive. They are rewritten only when the figures actually change, which is what the signature claims. Live share images still show the current release because they are drawn on demand. No figure, price, image or licence changes. The home page now opens with the answer in euros. The "what if the wage bought as much as before" tool already existed but sat below the cards, the history and two article blocks. The first figure on the page now says that buying as many pita gyros as in 1985 needs 2,040 EUR a month against the 924 EUR of today net minimum wage, so the wage covers 45% and would have to be 2.2 times larger. Matching 2019, only seven years ago, needs 1,309 EUR. It is not a new claim but the same index read backwards, and it states beside itself that it measures one product rather than the cost of living. The full tool with its year selector stays where it was.

  10. Improvementv2026.09.16-reproducible-views

    Lighter downloads and measured interaction response

    • Graphics follow the supplied references: bold titles, a two-colour curve and matching year annotations.
    • A scholarly 300-GRD wrap indication was verified, but without a price-collection year it cannot become a series anchor.
    • Three retrospective 1997–2000 references were logged as unsupported context and did not change the series.
    • A repeat check of a scanned 1988 issue confirmed metadata only, not readable primary content or a price.
    • Lighter Index updates reuse number formatters and draw the share image only when needed.
    • A small shared file-download helper avoids loading export logic and source text.
    • Large ZIP compression runs in a worker with integrity validation and a deadline.
    Read the full entry

    The shared Blob-download helper is isolated so images and simple JSON do not load CSV/PDF code and source text. Existing imports remain compatible, and object URLs are released even when downloading fails. ZIP compresses the large archived file in a worker after the same checksum validation. The deadline also terminates compression. Repeatable laboratory measurements cover scenario changes, PNG and ZIP, with first and repeated use. CPU/network conditions, source identity and limitations are recorded. Measurements are not presented as visitor INP or production-cache performance. Data, formulas and archived contents remain unchanged. The accessible table reuses number formatters for the same language, preserving every cell and its precision. Chart data stays stable when only year focus or event/range display changes, and refreshes normally for a different selection or visitor report. The share image draws near the viewport or on focus/download, with reserved space to prevent page movement. Exports still capture the exact requested view. Changes are informed by separate interaction measurements and diagnostic profiles, without claiming field INP. Calculations, numerical data and historical releases are unchanged. The Gyronomics in pictures collection follows the user’s reference composition: heavy serif headlines, a large figure on the right, warm paper, blue and orange area fills and a takeaway strip. The historical axis and annotated years match the reference, with values from the same series. Landscape images become 1536×1024; portrait images keep an independent composition. The gallery shows one image per row. Sources and qualifications stay visible, with the immutable dataset linked from SVG and HTML. Earlier downloads remain at their original addresses.

  11. Improvementv2026.09.15-historical-evidence

    Historical menus and traceable price evidence

    • Selected calculations, images with exact links and immutable dataset citations.
    • Shared price precision on screen/PDF and complete bounds in the accessible chart table.
    • Year pages: selected evidence, clearer navigation and on-demand JSON downloads.
    • System appearance, user-initiated installation, skip navigation and contrast fixes.
    • Lighter blog and history loading, with complete copy and build-time JavaScript budgets.
    • Homepage article discovery, contents, reading time and sharing across the blog.
    • Athens 2000: guide minimum and public archive-research inventory.
    • Six new Crete 2000–2001 local prices; Order 11/1985 retrieved without a gyro-wrap price.
    • Order 23/1981: kilogram and plated portion, not pita. Faster, documented archive screening.
    • Thessaloniki menus from 2009–2010 separate spread charges; the Athens 1999 travel account is verified.
    • A large parallel archive review records access failures without creating a new national anchor.
    Read the full entry

    New Pita Gyro menus at the same address appear on the 2009 and 2010 pages. Base prices and spread charges remain separate. Caption dating is distinguished from a printed year, without assuming unchanged recipes or weights. The existing Woohoo candidate was retrieved in full and appears under 1999, with serving format and exact purchase date unresolved. It is not counted as another independent source. Simaia of 1 December 1988 publishes a Messinia pricing formula with separate requirements for cooked gyro, raw-pork skewers and added pita. It gives neither an absolute price nor an observed weighing. Only the relevant complete PDF page is retained, with separate original and extracted-file fingerprints. The complete issue stays local. A public register summarises findings and original sources. Separate folders preserve reviews by period. Partial downloads and unreadable OCR are not reported as empty sources. Previous releases and immutable archives remain available. Public menu coverage is regenerated from year pages, counting each document once. Release comparison checks use the specific immutable pair of the earlier correction, without assuming that the latest two releases change numbers. New year links retain the selected language. Additional parallel screening retrieved the original Order 23/1981. Its prices are kilogram and plated-portion bases with additional charges, not pita-wrap prices. The 1981 and other price gaps remain open. The December 1980 retrieval was identified as the same already registered PDF. A new large-PDF discovery tool retains text in Form XObjects, validates HTTP ranges and explicitly discloses absence of visual review. The relevant complete page of the new order is retained with separate hashes. The source appears under 1981 and updates the 1988 targets and Gaps page. No numerical Index value changes. Added five local gyro-wrap price claims from two travel sources for Crete in 2001, preserving product, drachma amount, trip day or month, separate publication date and retrieval fingerprints. The joint Heraklion/Hersonissos price remains one claim, not two shops. The Fabbri diary’s original publication date remains unknown. The year page, JSON and Gaps explain why these local prices do not automatically replace the national proxy. Monetary conversion uses the shared exchange rate. The numerical series is unchanged. Family menus, multilingual diaries, student newspapers and specific pricing orders were also investigated. Duplicates, undated menus and prices for other products are recorded separately. The same package visually verified a 750-drachma pita-gyros price for Crete in an original Polish newspaper dated 21–22 October 2000. The issue date is not presented as an observation day and the Hersonissos photograph does not locate the price. This brings the new price claims to six from three sources. Order 11/1985 was also recovered: it changes other dishes, with no gyro-wrap price. Close reading of Article 2 corrected an initial internal interpretation before publication: it sets penalties and commencement after publication, rather than explicitly preserving other articles. Retrieval of the document is resolved; the year’s price gap remains. Order 12/1984 is still a target. Only Polish p.12 and regulatory pp.3–4 are retained in the repository, with separate fingerprints and render-equivalence verification. Years 2000, 1985 and 1988 and the public register were updated. Index figures and previous archives remain numerically unchanged. A further archive round adds an independent Athens guide price from iDNES in 2000, explicitly a minimum with a separate table-service surcharge. Publication date is not turned into an observation day. Two researchers read the publisher page; no article copy or fabricated SHA is claimed. Year 2001 discloses current Fabbri republication metadata without counting another account or certifying first publication. A public file and Gaps distinguish 83 ELIA catalogue records from 19 visually reviewed undated records. Linked images are not all inner pages. The two GAK fonds were checked through descriptions, lists and EAD without finding digital documents. Travel narratives, foreign newspaper columns and chain leaflets have separate reviews and explicit access limits. Earlier gaps and every numerical Index value remain unchanged. The original 2001 Kronika Beskidzka gives gyro in a bun or roll without explicit pita and was excluded from the series. A menu initially undated in the ELIA catalogue was dated to 1950 from its printed date, without changing the original snapshot. New guards cover price, dating, duplicate counting and the actual scope of visual inspection. A selected article card appears below the homepage Index using shared metadata without loading article bodies. All articles gain estimated reading time, keyboard and no-JavaScript contents links, canonical sharing and two or three editorially chosen related reads. Sharing falls back to clipboard or a selectable link; cancellation never triggers copying. The annual-spending article also explains optional delivery fees. History initially sends at most twelve entries in the selected language. Categories and the complete archive have real links that work without JavaScript; changing category resets the short list. The blog catalogue loads summaries only, and each article receives its own full copy, metadata, contents and related reading. Shared historical inputs are selected into a small generated file with source fingerprints and equality checks. The build now checks emitted JavaScript budgets and keeps full history and the complete article collection on the server. The public consistency page displays the same report and exports, with checks executed on the server. A technical before/after comparison records the measurement limits. Prices, wages, Index, tax and public API contracts are unchanged. Appearance offers System, Light and Dark, follows device changes when System is selected and synchronises saved preferences across tabs. Installation opens from the footer instead of a timed overlay, with EL/EN instructions and cancellation or failure handling. New installation and Apple Touch icons are generated from a vector G. The first keyboard link reaches the main content even without JavaScript. Darker orange in the light theme, readable history badges and larger footer link targets address measured contrast and target-size failures. Browser checks cover appearance, installation and accessibility. Figures and public data contracts are unchanged. Year pages receive only the selected year’s and language’s research and analysis from the server. Cross-year comparisons required to interpret a source are retained. The Index’s joint analysis receives summaries for both product choices, without the entire scenario collection. Contents keep calculations, sources and available research directly visible, with separate access to deeper analysis. The complete bilingual research download is requested from a public endpoint on demand instead of being embedded as a data URI. Its filename and data are preserved. A first download needs the network unless already saved; evidence text remains in the HTML. JavaScript budgets now cover yearly pages and the Index, with guards against full collections returning to them. Selected panel renderings were compared across every year in both languages. The numerical series, wages, methodology and existing API responses are unchanged. Price presentation now agrees across the data table, year comparison, calculation explanation, chart tooltip and keyboard readout, and selected/full PDF exports. Classic-equivalent prices and prices below one euro retain three decimal places; both range endpoints follow the central price precision. The accessible chart table, including the embedded view, now includes the selected series’ actual lower and upper index bounds in every language, unit and scenario. Its description states that only price varies, with wage and composition fixed. Numerical inputs, methodology, CSV/JSON and historical releases remain unchanged. The personal calculator preserves validated amount and wage basis in its URL, language links, reload and back/forward navigation. Typed amounts are not silently converted. Comparison, history, latest-year and since-2019 article images visibly include their specific view and immutable dataset links, including after PNG conversion. All four citation formats pin the dataset version and manifest SHA-256, with baseline JSON/CSV/manifest downloads. Live views are distinguished from the archive, which is not claimed to contain hypothetical or personal scenarios.

  12. Improvementv2026.09.14-historical-press

    Historical sources distinguish prices, changes and specifications

    • The 1985–1988 search now has a public register of checks and hashes, without a new Index price.
    • Prices share a city/year selection with counts, provenance and view downloads.
    • The gap follows the selected period and product, with a chart, sources and downloads.
    • Compare archived datasets by year with exact citations.
    • Shared explanation and visible range beside the selected index.
    • Recipe and source for every pinned entry, new previews and a separate Junior exception.
    • Fixed product identities, a public rehearsal and one verified ingredient-choice example.
    • Original references and classifications on the 1981, 1983 and 2004 pages.
    • Shared evidence in pages and JSON, without changing Index prices.
    Read the full entry

    Price research adds evidence with separate publication and observation dates, units and outstanding questions. An announced increase does not become an absolute price, a skewer specification does not become a cooked-gyro measurement, and an indicative leaflet is not a transaction. Sources are retained in a new folder with SHA-256. Public records and annual exports use the same entries. The efood address requirement and a protocol for the next configuration check are documented. A separate folder retains two dated Patris advertisements from 1987 and the register of targeted November 1988 screening. The gaps page links directly to the original PDFs. Neither advertisement was adopted as a gyro price. A fixed product-identity plan and public rehearsal on Prices today. Matching searches the full retained menu for the original ID and never substitutes a newly cheaper product. Missing or changed fields, ambiguous IDs and same or earlier dates cannot produce price ratios. Anonymous files reproduce from original collections with date and hash checks. A separate public Wolt pilot verifies the displayed default configuration and optional tzatziki for one item. It does not certify counter price, checkout total, weight or reference-product equivalence. Original captures, the Index series and previous immutable files are preserved. No monthly rate is published. The consolidated recipe review covers all pinned entries. Two new public Wolt previews in Naxos and Thiva match exact product IDs and complement the earlier Thessaloniki check. Named bread and ingredient choices on other platforms retain exact citations and pricing rules without a synthetic configured total. Junior is a separate size exception. The BOX attempt required an address and did not retain the pickup selection; no configured price or channel is certified. A separate folder retains manual transcripts of the new readings, registered and hashed. Bilingual per-product presentation and public downloads appear on the existing prices page. The earlier pilot, frozen plan, reports and Index are preserved. Headline cards, both comparisons on year pages and table details share one calculation presentation. It shows income after contributions and before tax, the matching price, a price-implied range, composition assumptions only in the classic view, and links to calculation anchors and year sources. The chart band moves from the price axis to the selected index axis and can be toggled. Wage and composition are explicitly fixed within that range. Card disclosures are available in the original HTML. The base series, methodology and archived datasets remain unchanged. Data releases now compare two immutable archives, including artifacts from the same day, pinned by full SHA-256 identifiers. The comparison reads stored monthly income, period/classic prices and both indices without recomputing older releases using current formulas. It separates figure revisions from other row, source and assumption changes. Explanations and sources appear as archived before/after, including interpolation anchors, without fabricated causal attribution. Filters, a comparison link preserved between languages, downloadable differences JSON and original CSV/JSON/manifests are included. Large files load only on request and their checksums are verified; failure shows no unverified result and allows retry. The series, methodology and eight existing immutable archives are preserved. The gap accepts both endpoints from all available years and switches between classic and period gyros. URL selection survives language changes, reload and browser history. Cards, narrative, chart, table and exports use one selected view. A small SVG is available in server HTML, with distinct line patterns, keyboard year reading, a cited SVG download and a complete accessible table with a sticky header. CSV and JSON retain exact inputs, base-100 levels, time conventions, sources, version and provisional CPI status. Both endpoints expose the shared Index calculation, price bounds, grades and assumptions. Links open the same period in Data and the comparison of both products. The Prices page uses one report set for the list, cities, annual summaries and hypothetical model comparison. City/year filters persist in links, language changes and browser history. CSV/JSON include the selected view, loading time, counts, limitations and provenance, without nicknames or free text. City summaries are separated by year, with counts visible on mobile. Organised collections have a distinct section and explicitly do not follow visitor filters. The 1985–1988 search now has a public register of checks and hashes, without a new Index price.

  13. Improvementv2026.09.13-payroll-assumptions

    Assumption checks and reproducibility

    • Follow-up of catalogue gaps and actual product options on Prices.
    • A new dated three-platform pilot on Prices provides public raw files and actual metadata coverage.
    • Richer product records and a public catalogue comparison on Prices, with evidence and exclusion reasons.
    • Local measurement review on Classic, checking evidence and weights with a hypothetical preview that leaves the series unchanged.
    • Joint wage, price and composition analysis on the Index and year pages, with computed findings and public reproduction.
    • Public historical-price exclusion with CSV/JSON and standalone reproduction; fonts load from Gyronomics.
    • Common-assumption comparison across all years, with exact payment replay.
    • Easter, leave timing and transitional days are visible on Minimum Wage and in downloads.
    • Ceiling checks by year and first-insurance cohort, with separate salary and bonus evidence.
    • Historical years with sourced lower bounds, exact missing intervals and inspectable calculations.
    • Wage-basis impact on both gyro measures, peak comparison and a readable review decision with primary citations.
    • Wage-difference breakdown, combined peak tests and original 1977 product evidence.
    Read the full entry

    New collections retain available product IDs, original descriptions, declared sizes, option structures and prices from the same response without additional network requests. Evidence links to the independent classifier winner; distinct products tied at the minimum price remain ambiguous. Changed and missing fields are distinguished from legacy name-only checks and matching additional recorded fields. Richer diagnostics use a separate denominator and do not certify physical equivalence or final configured prices. Prices displays a review of the existing pilot snapshots separately from visitor reports, with per-platform counts, detailed JSON, exact public input copies, SHA-256 hashes and source line references. The two differently framed pilots do not publish a monthly rate. No new prices or weighings were collected, coefficients and the series remain unchanged, and the user is not required to weigh products. Reconciles 766 payments in 51 years using the worksheets’ explicit rates and rounding. Checking the Easter wage-reference date changes no amounts. Adds separate leave-timing and transitional-month weighting tests, with exact original-currency differences, parameters, sources and SHA-256. The comparison discloses the selected leave window, fixed holiday uplift and unresolved insurance limits. Archived the Bank of Greece report confirming abolition of employee stamp deductions from 2002. The research API is now payroll-before-tax-v4. A daily release and new immutable bundle retain all prior files and unchanged Index values. No tax or subsidy is inserted and full legal approval is not claimed. The report reproduces with one command. Adds a separate contribution-ceiling assessment with 23 dated rules and ten sources. For new-insured employees, ordinary salary is documented as unaffected in 1993–2026 and bonuses/leave in 1993–2016. Available old-insured periods are tested separately, without transferring the 25-day monthly multiplier to bonuses. Age is not treated as proof of first insurance. Status, ceilings, headroom and sources appear on Minimum Wage, in JSON/CSV and in a reproducible report. The research API becomes payroll-before-tax-v5. All Index values, the income-tax pause and explicit outstanding bonus/affiliation rules are retained. Extends primary support for historical ceilings while distinguishing exact ceilings from conservative lower bounds. Ordinary-salary non-capping evidence now covers 1979–1981 and 1983–1989, plus 2004–2005 for old-insured employees. Unsourced intervals and insufficient bounds are exposed separately on the page, in JSON and in the reproducible report. January–February 1982 remains unresolved. The research API becomes payroll-before-tax-v6 with payroll-insurance-v2, without changing payroll amounts or approving bonuses and a common profile. Minimum Wage now shows the existing payroll reconstruction’s effect on period gyros and classic equivalents for each year, holding prices fixed, before tax and without subsidy. Extends the all-year table, percentage differences and CSV/JSON exports. Peak comparison excludes projections and describes two specific wage bases, not a probability or an exhaustive robustness study. Adds a concise decision to retain the published basis, distinguishing evidence, quantified assumptions and unquantified effects. Original Gazette Law 4476/1965 is recorded with SHA-256 and visual inspection. Alongside Law 825/1978 it documents specific outstanding bonus-allocation and earlier imputed-insurance-basis questions. No new insurance year is declared closed. The decision and comparison table reproduce with one command and are checked during build. The research API becomes payroll-before-tax-v8, without changing Index values or original worksheets. Adds an ordered accounting bridge for all 51 wage-basis differences: rounding, wages and periods, bonuses/leave, contributions and other deductions. Page and CSV/JSON share the calculation, without calling it causal attribution or uncertainty shares. Crosses two wage bases with twelve price tests, propagating anchor changes into dependent years. The peak table exposes classic-index sensitivity without interpreting case counts as probabilities. Rechecks 1979–1980 and 1982–1983 wage evidence. Captures original Regulation72/1977 with precise product, sale-channel and generic weight-limit references. Classic explains why these are not cooked-meat measurements inside a pita. Research API becomes payroll-before-tax-v9. Wages, prices, classic equivalents and original worksheets stay unchanged; no new insurance year is approved and tax remains outside the Index. Classic presents the published baseline and exclusion of the 1983 price, the 1984 price or both, recalculating every dependent year. Both measures are ranked across completed years with fixed wages and product factors. Recalculated years are distinguished from actual rounded-price changes. Cases are not probabilities, uncertainty bounds or broad robustness against wage and portion assumptions. Year pages and Whitepaper link to the analysis. Public CSV/JSON include inputs, dependencies and results; a standalone Node program reproduces prices, indices and peaks without packages, network or private-repository access. The build checks the report and deployment files. The analysis is separately versioned and does not change the series or its immutable archives. Existing DM Sans and Space Grotesk are self-hosted with original WOFF2 files, licenses, SHA-256 and unchanged weights/character ranges, removing the external Google Fonts stylesheet dependency. Greek system fallback remains unchanged. Crosses the two existing wage bases, four historical-price choices and seven composition specifications. Period gyros have eight distinct combinations and classic equivalents fifty-six, without repeating identical raw cases for each portion assumption. The Index follows the selected unit and does not apply base-series findings to hypothetical CPI scenarios. Each year shows its ranks, selected-case extrema and comparison with the first year. Projections are excluded from rankings and findings. Ties are retained and ranks precede displayed-count rounding. Exact peak identity is sensitive to combined assumptions; agreement and disagreement language is generated from results. Separate test families and concrete example combinations explain each peak. Whitepaper and Classic link to the new section. Full JSON, CSV, a compact frontend summary and standalone Node verifier are public. Arithmetic reproduces without private-repository access. Shared composition parameters also serve the older script, preserving previous results. Build checks the files and actual deployment assets. Counts and scenario extrema are not probabilities or uncertainty intervals; payroll reconstruction stays under review, and published values and older immutable archives remain unchanged. The existing blank measurement template and a new bilingual guide are publicly downloadable without private links. The Classic-page tool reads JSON only in the browser and exports a local report with original records, review cutoff, SHA-256 fingerprint and calculation version. The same read-only engine runs as a local command. Checks cover types, required fields, valid ordered timestamps, future records, mass reconciliation, duplicate records and repeated weighings. Collections outside the measurement window must be pilots. A business group cannot enter both calibration and independent validation within one input. Menu declarations, missing evidence and unseparated remainder withhold numerical previews. Readiness for human review neither authenticates evidence nor approves calibration. For a complete in-scope record the preview substitutes only meat grams in the measurement year, holding annual price, purchasing income and other assumptions fixed. A shop price is not treated as a national price and the reference unit is not fitted to a small sample. Previous values and immutable archives remain unchanged. No new weighings were collected and no coefficients were approved. Completed a limited new pilot in its own collection folder, with fresh candidate frames, actual timestamps and fingerprint checks before freezing the snapshot. Prices shows selected entries by platform, entries without a qualifying extracted wrap and entries with no extracted items. Extraction failure is not presented as proof of an empty catalogue. Detailed JSON connects captured and reviewed selections to original fields and source lines; a public ZIP contains exact raw files and manifests. The report reproduces offline and is checked in CI. Actual missing descriptions and deferred configuration are explicit. No national price or monthly rate is calculated, the historical series stays unchanged and user weighings are not required. Completed a separate, dated follow-up of catalogue gaps and selected products. The new full A responses contain menu items without an explicit gyro name: an empty gyro selection did not mean an empty catalogue. The reader now retains an independent full-menu check tied to the exact shop, and collection preserves those diagnostics. In B, actual codes from fresh menus link the same products to option groups and ingredient descriptions. Product ID, code and shop are verified separately. Prices presents the follow-up, differences in “with everything” declarations and public JSON with source fields and fingerprints. The zero base field is not presented as a free product, a “from” price is not a final order price and no basket is automatically selected. Original responses, times, codes and denominators remain in a new folder; previous snapshots, Index prices and parameters stay unchanged. User weighings are not required.

  14. Improvementv2026.09.12-payroll-review

    Index sharing and historical evidence

    • The Index and comparisons come first on the main pages.
    • Targeted ceiling and OGA research without a new strict annual closure.
    • Links, images and embeds preserve the same selections.
    • Crawler checks on real server HTML and a more accurate bilingual llms.txt guide.
    • A directory per collection, safe resumption and fast offline checks.
    • SEO checks across all years/articles, parent navigation and sitemap dates.
    • Data period selection, matching CSV/PDF, shareable views and selected-year evidence.
    • Separate page loading and history on demand, preserving legacy references.
    • Year pages lead with the Index and comparison controls appear earlier in Numbers & stories.
    • Payroll: 51-year breakdowns, 766 calculated payments and visible recovery assumptions.
    Read the full entry

    Targeted research located historical judicial evidence of separate bonus and leave contributions and archived an original insurance law. Numeric ceilings and proportional days remain unresolved. OGA continuity remains open; an omission of ratified ministerial decisions in a reprint was recorded. No additional strict approval or change to production wages, prices or indices. Index selections persist in the URL, language switch, shared image, embedded chart and mini card. Separate analytical lenses identify their units. Income-tax integration research is paused at the user’s request. The home page shows a compact Index history with links to individual years. The Index opens with the current value, a short calculation and the chart; additional comparisons expand when needed and release history follows. Numbers & stories puts comparisons before publication assets. Year pages explain the wage basis and price provenance alongside the figures, with direct links to evidence. The Whitepaper adds a short reading path. Source, limitation and FAQ descriptions now agree in Greek and English. Added server-HTML SEO checks for the homepage and Index in EL/EN, without JavaScript, with multiple crawler user agents plus robots, sitemap, llms and real 404 checks. They also run in CI. The llms.txt guide now links to sources, methodology, exports and key assumptions in Greek and English. Lint and formatting now exclude local research files and generated previews, avoiding unrelated temporary artifacts. Each new collection owns its directory, discovery frame, timestamped attempts and independent-classifier inputs. Resume retries only unread shops. Pre-freeze validation reports coverage and named gaps, while monthly comparisons record exact input files. Added a bilingual runbook and separate offline Python checks in GitHub without requiring Python in the Lovable build. No new live collection was performed and Index prices are unchanged. SEO checks now cover every published year and article, server-rendered body content, canonical/hreflang, structured data, internal links and invalid URLs. Year and article pages gain visible navigation to their parent catalogs; the sitemap uses dataset/article modification dates. Added a browser check that recovery from 404 restores an indexable page. The homepage title and Index figures are preserved. The Data page shares period, gyro unit, scenario and ordering across its table and selected-view CSV/PDF with the corresponding sources. URL state survives reload, sharing and language changes. Selection evidence groups years by price derivation without treating model categories as source verification. Complete all-years exports remain separately available. Index figures are unchanged. Analytical pages now load their own code separately. Table provenance notes are isolated from the full audit engine so they cannot import the archive indirectly. The Index summary no longer imports the complete release archive. Data receives only the current daily entry; Releases initially receives the eight latest days in the page language. Complete history is fetched on request or when opening a legacy link, and remains accessible without JavaScript. Initial server rendering retains real content and sources; Index figures and public exports are preserved. Year pages start with the Index and monthly wage equivalent, with compact year navigation and distinct period and classic-product prices. Detailed evidence and calculation are grouped beneath figure provenance. Content remains in the initial HTML and links reveal the appropriate section, including repeated use of the same link. Numbers & stories shows a compact update date with expandable full coverage and collection dates, bringing mobile comparison controls higher. Sources, selected years and exports remain available in Greek and English. Recovered research payroll detail from existing code: contribution and stamp splits for 1976–1979 and 1981, individual payments also for 1984–1987, and month/type for 1982, 1983, 1990 and 1992. The public comparison now covers 51 years and 766 calculated payments. All previously recorded annual totals are preserved. Versioned parameters, pinned sources and exact per-payment replay document the recovery. The page and JSON/CSV distinguish recovered records from observations and expose bonus, leave and rounding assumptions. Some wage-change months remain midpoint scenarios rather than day-weighted calculations. Index numbers, separately shown subsidy and the income-tax pause are unchanged. The research API is now payroll-before-tax-v3; unavailable earlier contracts return 409. Arithmetic completeness does not certify a common historical statutory calendar.

  15. Improvementv2026.09.11-tax-audit

    Unified payroll and tax evidence

    • Consistent subsidy comparison across 28 years and separate payroll/tax impact on the index.
    • 17 new conditional net-payroll worksheets; 631 payments in the unified ledger.
    • User-selected wage-income tax benchmark without imputed-income uplift.
    • Separate readiness checks: completed arithmetic does not automatically enable index integration.
    Read the full entry

    Unified the two research subsidy-base conventions across 28 years, 1999–2026, using the same choice throughout instead of differing interpretations by cohort. Original worksheets and special reference dates are preserved, with amounts checked against source results. Added a local index-impact comparison separating payroll-basis changes from income tax. For 1988, 1991 and 1994, calculated conservative zero-tax bounds without stamp deductions and specific sufficient ceilings per separate payment; historical application remains to be confirmed. The renewed source review did not establish OGA levy continuity. No additional strict approval or headline index change. Added 17 conditional annual net-payroll worksheets for 1980, 1999–2010, 2013–2016, with 256 payments. The unified ledger now contains 51 years and 631 payments, 46 conditional past-year net scenarios, one projection and three separate settlement scenarios. Numerical net income remains unspecified for 1976. Calculations preserve native currency, alternative subsidy bases and rounding conventions. Integration readiness is checked separately from completed arithmetic; strict tax approvals have not increased. Defined a new minimum-wage income-tax benchmark excluding imputed-income uplift, explicitly selected by the user while preserving the original profile. Historical rent inputs are no longer an index prerequisite. The unified payroll ledger contains 51 years and 375 payments, including 75 new payments for 2017–2021 linked to their original proved zero-tax ceilings. It holds 29 conditional past-year net scenarios, one projection and three separate settlement scenarios. A numerical net scenario is still missing for 1976, 1980, 1999–2010 and 2013–2016. These remain research amounts with separate tax and payroll approval. Added a unified research annual-payroll ledger for every year, with JSON/CSV exports, separate tax and payroll evidence status, native units, exact worksheet pointers and payment details. Proof ceilings never become actual gross or net amounts. Annual liability remains separate from settlement, and unknowns from zero. Added unit, subsidy, annual/monthly basis and premature-integration checks. The public series is unchanged. The following descriptions record earlier stages of the same day. Completed fifteen additional numerical scenarios with explicit assumptions and a separate2026 projection. Coverage distinguishes21 strict audits,19 numerical scenarios and one projection. Local tax research now includes original historical schedules and relief provisions, continuity worksheets and a pinned reference profile. Zero-liability proofs include bonuses, leave pay, imputed income and the deductions or conditions relevant to each period. For 2000–2007, even a conservative bound on complete gross income suffices, avoiding irrelevant deduction-cent reconstruction. Original OMED agreements and tables, gazettes and an explicitly labelled reprinted ministry guide were archived with hashes and exact reviewed pages. Calculations check regime changes, commencement and additional income levies. Inventory and report tables follow the research results and are protected by deliberate mutation checks. The 2023–2025 payroll and settlement worksheets remain diagnostics. A closed zero-tax audit does not approve exact net wages. Headline integration awaits all-year coverage. The 1999 audit also closed using two taxable-income bounds, old- and new-insured contribution rules and the same-year assessment-cap circular. Independent arithmetic and a one-euro taxable-income sensitivity check were completed for 2023–2025. Indicative amounts are kept separate from approved settlement; these three years remain open. Archived annual income-tax guides for 2011–2012 and added an independent conditional 2011 payment calculation, without claiming an additional annual audit closure.

  16. Improvementv2026.09.10-wage-evidence

    A complete inventory of wage evidence

    • An inventory for every year, fourteen archived PDFs and two reproducible ordinary annual-salary calculations.
    • ATA estimates, the conflicting 1983 table and the 1992 corrective clauses are recorded separately.
    • Five additional sources, 1992 correction sensitivities and partial 1991/1993 payroll cases; final net pay remains open.
    • Dated social contributions by fund and payroll scenarios with bonuses and leave; final net pay remains under review.
    • Eight sources and a 1993 annual worksheet separating deductions, stamp/OGA, scale tax and withholding.
    • Original 1994 agreement and a specific legal link for deduction of employee charges.
    Read the full entry

    Archived eleven gazettes, two signed agreements and one typeset republication with hashes and visual review. The inventory covers every year from 1976 to 2026 with specific next checks. Recorded the arithmetic conflict in the 1983 republication and the need to apply the 1992 corrective clause. The 1991 and 1993 agreements support research calculations of twelve ordinary salaries, separate from bonuses, contributions and tax. Checks protect provenance, coverage and exclusion of unverified amounts. The headline series and full-coverage requirement for tax integration remain unchanged. The same-day review adds three original gazettes, a contemporary December-to-December CPI report and a later INE table. The 1992 clause is tested with three rounding policies; arithmetic agreement is not legal verification. ATA-table discrepancies and invalid dates are preserved. Partial 1991/1993 payroll cases apply monthly main-pension rates, separate 1993 health and bonus salary components. Bonus holiday uplift, remaining deductions, final gross, net pay and tax remain open. Registered inputs and tests make the diagnostics reproducible. Added two original IKA circulars and a Stamp Code consolidation with distinct evidence classification. The social-contribution reconstruction preserves each fund’s effective dates, excludes employer and heavy-work additions and reconciles separately printed totals. Main pension is distinguished from all employee contributions. Monthly social deductions are calculated on verified salaries, alongside two conditional 1993 cases with bonus holiday uplift. Historical uplift application, assessment caps, rounding, stamp/OGA and tax remain open. Tables are reproducible and checked through deliberate mutations. Numerical series and the full-coverage requirement for headline tax integration remain unchanged. Added four original gazettes, three Ministry circular republications and an institutional worked example. The research worksheet connects two leave assumptions with employee social contributions, stamp duty, OGA and annual scale tax. It distinguishes zero reference PAYE coefficients from positive scale tax. The OGA-on-duty enactment and the precise cap/rounding enabling provision were verified. Implementing decisions, historical leave allocation and the full original stamp/deductibility chain remain open. Independent arithmetic and checks protect the worksheet. Raw HTML is exempt from Git and Prettier transformations to preserve source hashes. Final net pay remains unverified; headline tax integration still requires evidence for every year. Added the signed agreement to the wage inventory and a reproducible annual ordinary-salary calculation. Archived the original income-tax code and verified its official mapping of net employment income to the predecessor provision. Complete net pay remains unverified pending contribution implementing decisions and historical bonus/stamp details.

  17. Improvementv2026.09.09-price-provenance

    Evidence in exports

    • Archived eight original wage, bonus and contribution gazettes, with an isolated 1987 annual wage-base and tax diagnostic.
    • Archived original 1984–1987 tax gazettes and added an isolated 1987 research worksheet. Annual wage evidence remains open and the headline index is unchanged.
    • Price, quantity and tax research with a yearly review inventory and measurement template. Headline tax integration requires evidence for every year.
    • New classic-product evidence section, a complete JSON denominator and specific requirements for parameter calibration.
    • Whitepaper with per-year calculations, an assumption register and downloadable precision review. The published series is preserved.
    • The first main-menu link is labelled “The Index”, making the site’s central destination clear and directly accessible on mobile and desktop.
    • Navigation prioritises changes, year comparisons and sources. Search supports unaccented Greek and keyboard navigation. Offline installation initially stores only essential files.
    • Article bodies load when an article opens, and search questions when search opens. Article metadata and question links are preserved. Added before-and-after measurements.
    • Year pages open comparisons with a selected second year. Added year swapping and CSV with period and classic gyro prices, wage, purchasing power, sources and version.
    • Added year selection on the home and year pages, direct links to calculations and sources, and links from summary cards to each year’s detail page.
    • Added integrated monthly audit JSON. Rechecked full menus and item details; starting prices are not treated as final prices with selected extras.
    • Collapsed detailed year-page research. Added an offline product-identity preflight for monthly comparisons and documented priorities from existing sensitivity scenarios.
    • Added geographical coverage of public menus with deduplication. Recovered an Athens menu with different cover and caption years, without assigning an unsupported model year.
    • Recovered Stelios menus for 2012 and 2023. Added a base-price, spread and portion comparison with photographs and JSON, without annualization. The ambiguous 2019 menu is excluded.
    • Recovered and read eight candidate-menu images from Polichni, Pefka and Stavroupoli. Year pages and JSON now show exclusions and effective-price uncertainty.
    • The regional index now shows Thessaloniki evidence by year, historical input status, hypothetical source removals and a JSON download.
    • Reviewed unidentified regional inputs, archived two candidate menus and added removal scenarios. Identities remain unresolved. The series is unchanged.
    • Added Athens reports from 2007/2012 and a shop-level regional input inventory. Removal tests retain other shops in mixed years and use production endpoints. Series unchanged.
    • Recovered three additional shops for 2008 and a second menu for 2010. Added public evidence and regional sensitivity checks without changing the series.
    • Year pages and JSON now show recovered historical menus with prices, photograph links, dating limitations and a separate label for existing regional model use.
    • Recovered Express 2023 and 2025 menus. Unified histories for three shops/chains, separating spread charges and distinguishing caption observations from annual model prices.
    • OMED supports the February 14, 2012 reduction. Added a calendar-day comparison with WSI timing, without production changes. No new historical menu was verified.
    • The 2011 input and its dependent interpolation weights were removed together in diagnostics. Added annual price/index comparisons and wage cross-checks. GSEE confirms the July 2011 pay increase.
    • Wage timing review now covers 1994–2024 and crosses price-source scenarios. Findings apply to this window; production figures remain unchanged.
    • Reviewed peak and decline sources. January versus year-end wages change decline timing. Added 1983–1984 anchor-removal tests and a public explanation of the composition scenarios’ limits.
    • The composition explorer compares peak years, largest annual declines and complete decades across scenarios. It retains ties, excludes partial decades and offers matching JSON downloads.
    • The classic page now offers year selection and composition scenarios. Year pages link to the corresponding year, with separate classic prices, purchasing power and differences.
    • Researched same-business menus and recovered older Devido catalogues. Wraps and portions are compared separately; unknown recipes and different weights cannot certify a matched price increase.
    • The 2021 menus appear on year pages, in the API and JSON download. Added Devido and Nikiti, with separate geography, unknown extras and a matched-sample spread comparison.
    • Retrieved photographed 2021 menus, separating base prices and extras. Added a weighting experiment that deduplicates repeated witnesses and verifies image integrity. Production prices are unchanged.
    • Recorded new 2020–2024 evidence, separating ranges, bounds and forecasts. Added conditional inclusion and weighting trials. Production prices are unchanged.
    • Rechecked modern sources and extended combined omission diagnostics. Results identify retained sources and years without direct observations. Production prices are unchanged.
    • Added modern-input provenance with producers, editions and republications. Linked it to the score audit, explicitly recording unverified attributions and unknown sample independence.
    • Audited scores across all years, separately testing source counting and agreement credit. Added comparison tables and date/product review details. Production scoring was not replaced.
    • Euro-transition evidence separates existing model transcriptions from new findings, with edition and assignment dates, a two-item amount and the preceding-anchor dependency. The series is unchanged.
    • New year-page research section shows source amounts, products and outstanding questions. API and JSON download share one structure and distinguish findings from model inputs.
    • Reviewed a photographed historical table illustrating a skewer and recorded exclusions and shared article provenance. Added a separate skewer-model comparison without a new anchor.
    • Checked guide catalogue records and recorded access restrictions. Added diagnostics of skewer-estimate dependence on unverified pairs without changing prices.
    • Read the original archive scans and clarified their dating. Added conditional recalculation for both product definitions without adopting the price.
    • Extended historical research with an archive candidate of uncertain date and exclusions for product-unit mismatch or missing price. The series is unchanged.
    • Applied a same-declared-recipe experiment to available pairs. Different fillings and incomplete options are rejected with reasons. Factors and the index are unchanged.
    • Verified platform-reported addresses and retrieved item options. Rate-limit errors returned with HTTP 200 are separated from valid responses. Base and configured prices are not equated.
    • Audited pilot-menu duplicates, defaults and geographic clues. Excluded burger variants and corrected C item identifiers. Adjustment factors are unchanged.
    • Extended the pilot to a second platform. Item review separates availability, burger type and base from configured prices. Candidate pairs are not yet adjustment factors.
    • Added full-menu capture and completed a small three-city pilot. Raw files and candidate classifications are preserved for review. The index is unchanged.
    • Audited saved menus for basket calibration. They contain selected gyro minima, not a complete product basket. Added a reproducible coverage audit and measurement protocol.
    • Shared price provenance on year pages, in the API and in JSON downloads, with version, sources, original amounts and explicit missing values. Prices are unchanged.
    • Added historical input omission diagnostics and review of new source leads. Hypothetical examples and unidentified products are not added to the series.
    Read the full entry

    The first main-menu link is labelled “The Index”, making the site’s central destination clear and directly accessible on mobile and desktop. Navigation prioritises changes, year comparisons and sources. Search supports unaccented Greek and keyboard navigation. Offline installation initially stores only essential files. Mobile menus use the same groups. Search contains keyboard focus and restores it on close. Arrow-key selection scrolls the active result into view. Other files are cached when used, with an offline fallback page. Added real-browser checks for keyboard use, loading failures, recovery and offline operation, plus a build limit on initial precache size. Article bodies load when an article opens, and search questions when search opens. Article metadata and question links are preserved. Added before-and-after measurements. Year pages open comparisons with a selected second year. Added year swapping and CSV with period and classic gyro prices, wage, purchasing power, sources and version. Added year selection on the home and year pages, direct links to calculations and sources, and links from summary cards to each year’s detail page. Added integrated monthly audit JSON. Rechecked full menus and item details; starting prices are not treated as final prices with selected extras. Collapsed detailed year-page research. Added an offline product-identity preflight for monthly comparisons and documented priorities from existing sensitivity scenarios. Added geographical coverage of public menus with deduplication. Recovered an Athens menu with different cover and caption years, without assigning an unsupported model year. Recovered Stelios menus for 2012 and 2023. Added a base-price, spread and portion comparison with photographs and JSON, without annualization. The ambiguous 2019 menu is excluded. Recovered and read eight candidate-menu images from Polichni, Pefka and Stavroupoli. Year pages and JSON now show exclusions and effective-price uncertainty. The regional index now shows Thessaloniki evidence by year, historical input status, hypothetical source removals and a JSON download. Reviewed unidentified regional inputs, archived two candidate menus and added removal scenarios. Identities remain unresolved. The series is unchanged. Recorded possible dependence between 2006/2007 reports, without adding a price observation. Added Athens reports from 2007/2012 and a shop-level regional input inventory. Removal tests retain other shops in mixed years and use production endpoints. Series unchanged. Recovered three additional shops for 2008 and a second menu for 2010. Added public evidence and regional sensitivity checks without changing the series. Year pages and JSON now show recovered historical menus with prices, photograph links, dating limitations and a separate label for existing regional model use. Recovered Express 2023 and 2025 menus. Unified histories for three shops/chains, separating spread charges and distinguishing caption observations from annual model prices. OMED supports the February 14, 2012 reduction. Added a calendar-day comparison with WSI timing, without production changes. No new historical menu was verified. The 2011 input and its dependent interpolation weights were removed together in diagnostics. Added annual price/index comparisons and wage cross-checks. GSEE confirms the July 2011 pay increase. Wage timing review now covers 1994–2024 and crosses price-source scenarios. Findings apply to this window; production figures remain unchanged. Reviewed peak and decline sources. January versus year-end wages change decline timing. Added 1983–1984 anchor-removal tests and a public explanation of the composition scenarios’ limits. The composition explorer compares peak years, largest annual declines and complete decades across scenarios. It retains ties, excludes partial decades and offers matching JSON downloads. The classic page now offers year selection and composition scenarios. Year pages link to the corresponding year, with separate classic prices, purchasing power and differences. Researched same-business menus and recovered older Devido catalogues. Wraps and portions are compared separately; unknown recipes and different weights cannot certify a matched price increase. The 2021 menus appear on year pages, in the API and JSON download. Added Devido and Nikiti, with separate geography, unknown extras and a matched-sample spread comparison. Retrieved photographed 2021 menus, separating base prices and extras. Added a weighting experiment that deduplicates repeated witnesses and verifies image integrity. Production prices are unchanged. Recorded new 2020–2024 evidence, separating ranges, bounds and forecasts. Added conditional inclusion and weighting trials. Production prices are unchanged. Rechecked modern sources and extended combined omission diagnostics. Results identify retained sources and years without direct observations. Production prices are unchanged. Added modern-input provenance with producers, editions and republications. Linked it to the score audit, explicitly recording unverified attributions and unknown sample independence. Audited scores across all years, separately testing source counting and agreement credit. Added comparison tables and date/product review details. Production scoring was not replaced. Euro-transition year pages separate guide transcriptions already used by the model from new findings. Edition, observation and assignment dates remain distinct, alongside a two-item caption amount and the estimate’s dependency on the preceding anchor, in the page and JSON. The series is unchanged. New year-page research section shows source amounts, products and outstanding questions. API and JSON download share one structure and distinguish findings from model inputs. Reviewed a photographed historical table illustrating a skewer and recorded exclusions and shared article provenance. Added a separate skewer-model comparison without a new anchor. Checked guide catalogue records and recorded access restrictions. Added diagnostics of skewer-estimate dependence on unverified pairs without changing prices. Read the original archive scans and clarified their dating. Added conditional recalculation for both product definitions without adopting the price. Extended historical research with an archive candidate of uncertain date and exclusions for product-unit mismatch or missing price. The series is unchanged. Applied a same-declared-recipe experiment to available pairs. Different fillings and incomplete options are rejected with reasons. Factors and the index are unchanged. Verified platform-reported addresses and retrieved item options. Rate-limit errors returned with HTTP 200 are separated from valid responses. Base and configured prices are not equated. Audited pilot-menu duplicates, defaults and geographic clues. Excluded burger variants and corrected C item identifiers. Adjustment factors are unchanged. Extended the pilot to a second platform. Item review separates availability, burger type and base from configured prices. Candidate pairs are not yet adjustment factors. Shared price provenance on year pages, in the API and in JSON downloads, with version, sources, original amounts and explicit missing values. Prices are unchanged. Added historical input omission diagnostics and review of new source leads. Hypothetical examples and unidentified products are not added to the series. Audited saved menus for basket calibration. They contain selected gyro minima, not a complete product basket. Added a reproducible coverage audit and measurement protocol. Added full-menu capture and completed a small three-city pilot. Raw files and candidate classifications are preserved for review. The index is unchanged. The whitepaper now offers a year selector with actual calculation steps, product and coverage definitions, a parameter register and composition-test findings. The index and sensitivity variants share one classic-conversion chain. A complete intermediate-rounding review covers every year, CPI mode and wage basis, with a JSON download and a decision to retain published arithmetic. Public data now explicitly describes conversion precision and stages. Existing numerical rows are preserved. The classic-product page now has an accessible weight and composition evidence section linked to the whitepaper and limitations. It includes every wrap weight declaration, separate counts of experimental pairs and shop groups, calibration requirements for each parameter and a downloadable full JSON audit with its denominator. The audit is generated from immutable pilots and verified in the build. Two new historical quantity sources were recorded as leads pending visual verification. Index coefficients and the numerical series are unchanged. Recorded sources for prices, cooked weight and income tax, a year-by-year tax review inventory and a physical-measurement template. Tax may enter the headline index only after all years are adequately documented. Figures remain unchanged. Retrieved complete gazettes for laws 1473/1984, 1563/1985, 1591/1986 and 1731/1987, with relevant pages visually checked and file fingerprints recorded. Transcribed the 1987 employee schedule and added an isolated worksheet checked against statutory cumulative totals and two contemporary examples. Recorded the April announcement’s conflicting credits, rounding conventions and the distinction between withholding and tax. The 1987 wage remains an estimate requiring verification. A new reported 2001 chicken-wrap price is retained as a repost lead without the original. This research changes neither the headline index, public tax coverage nor prices. Archived eight original gazettes with hashes and visually reviewed pages: 1984–1987 wage instruments, bonuses, holiday allowance and selected pension components. A provisional 1987 wage table is checked for complete monthly coverage and compared with the old estimate in an isolated tax diagnostic. An unresolved INE table conflict for the preceding year is recorded. Four new tests failed on deliberate mutations and passed after restoration. This adds no verified payroll, public tax coverage, new gyro-price observation or cooked-meat weighing.

  18. Improvementv2026.09-o-krikos-pou-elipe

    The missing link, the rehearsal, and the portion with three witnesses

    • Year pages separate the recorded original amount, model input and final series price, explaining estimates and anchors that constrain ranges.
    • Comparison images and quotes include period and classic metrics, assumptions and sources. Export spacing was corrected so five metrics do not overlap the notes.
    • Two-year comparisons show period and classic prices and purchasing power, with a shared portion-change check where both years are covered.
    • Year pages for 1990–2010 show portion stress tests: changes in classic price and purchasing power, with period prices fixed and explicit interpretation limits.
    • Year pages compare prices and purchasing power for period and classic gyros side by side, with composition rescaling explained and meat-weight assumptions audited.
    • Historical archive review: excluded a price for another product and recorded pending issues, distinguishing indexed excerpts from full-page review. The series is unchanged.
    • Interpolated years now explain their anchors and additional dependencies, with a distinct calculation-review label and source links.
    • Combined model research across price, date, geography and composition scenarios; a new photo-caption lead and verification priorities.
    • Euro-transition research: primary campaign context, a new candidate price table and five reproducible 1998–2002 scenarios. No production series change.
    • Added a research registry for 1995–2001 historical evidence, with sources, units, uncertainties and inclusion decisions. The published series is unchanged.
    • Automatic build, data and browser checks on GitHub.
    • The home chart loads near the viewport.
    • A concise wage table and sources in the historical article.
    • Complete collection pipeline and checks of the shop discovery frame.
    • Clearer homepage, organized data and concise daily history with full details.
    • Separate coverage, collection and update dates.
    • Deployment identity and browser checks for core flows.
    Read the full entry

    Year pages separate the recorded original amount, model input and final series price, explaining estimates and anchors that constrain ranges. Comparison images and quotes include period and classic metrics, assumptions and sources. Export spacing was corrected so five metrics do not overlap the notes. Two-year comparisons show period and classic prices and purchasing power, with a shared portion-change check where both years are covered. Year pages for 1990–2010 show portion stress tests: changes in classic price and purchasing power, with period prices fixed and explicit interpretation limits. Year pages compare prices and purchasing power for period and classic gyros side by side, with composition rescaling explained and meat-weight assumptions audited. Historical archive review: excluded a price for another product and recorded pending issues, distinguishing indexed excerpts from full-page review. The series is unchanged. Interpolated years now explain their anchors and additional dependencies, with a distinct calculation-review label and source links. Combined model research across price, date, geography and composition scenarios; a new photo-caption lead and verification priorities. Euro-transition research: primary campaign context, a new candidate price table and five reproducible 1998–2002 scenarios. No production series change. Added a research registry for 1995–2001 historical evidence, with sources, units, uncertainties and inclusion decisions. The published series is unchanged. GitHub now runs checks on each main push and pull request: locked dependency installation, build, data consistency and type checks, tests, lint and browser tests against the built app. Failure reports and browser traces are retained. Lovable publishing remains separate. The home chart loads as it approaches the viewport, reserving its height to keep the layout stable. The answer, controls and detailed table remain available. Repeatable lab performance measurements cover home, index and data pages. The historical minimum-wage article now includes a short answer, selected years from the series, wage sources and per-year evidence, plus a purchasing-power comparison link. Nominal amounts are distinguished from purchasing power and the calculation basis is explicit. Homepage and default social cards now use bilingual Gyronomics branding, without outdated figures or the Reverse name. The Data page now uses expandable sections. Changelog and releases show summaries with full history, preserving daily grouping and old links. Date labels distinguish series coverage, sample collection and documentation updates. Added a build identity and deployment check, plus browser checks for downloads and recovery from failed loads. The step that produces 518 of the measurement's 1,287 rows, and every portion price yesterday's finding rests on, did not exist. The first platform's script knew how to read prices from a shop address, but not how to find shops. Nothing gave it away: the command was written in the instructions, the file existed, the data was there. We would have learned about it on the 25th, during the first regular reading. It was written, and it took two routes. The platform's own map filtered on the name recovers 76% of the shops we already have, because it misses anyone whose name does not say what they sell. The per-city category listing recovers 71%, because it misses anyone the platform has not filed there. Together they recover 517 out of 518. Along the way something turned up that would have gone unnoticed: three cities returned zero shops and looked like they had none at all, when they had simply been rate-limited. Asked again, they handed over their shops. The same mistake sat in the menu reading: a blocked shop passed for a shop with no wrap. Both now retry, and whatever goes unread is printed by name. The candidate pool is now four times larger, so the next reading will carry more shops on this platform. City medians will move from the sample's composition rather than from prices, which is why published city factors stay on today's sample until a full reading exists on the new frame. Once is an accident, so the other two faced the same question. The third had the same fault in a sneakier form: the code was there, but it read a file that is neither in the repo nor on disk. It was a copy of the listing saved by hand at some point and lost since, so another 355 rows did not reproduce. It now reads for itself, 16,957 shops across 236 areas. The second was the only one with its whole chain intact from the start. One thing is worth saying plainly. Those two platforms recover 100% of their shops, but that does not mean they find them all: September's reading came out of that very same name filter, so it has no way to disagree. How much the filter misses we know from the first platform, where a second way of finding shops exists and the name alone catches three quarters. Whether it bends the price we also know, from an earlier random-sample check: it does not. And after all that, a rehearsal. The chain was rewritten end to end in two days and the next reading window is four days long: the 25th must not be the first time the new code runs. A command went in that runs the whole route with forty shops per platform, writing outside the data folder. It caught a fault on the first try. The largest platform stopped before reading a single shop, because one city out of seventy-eight hit a rate limit and the error blew up the entire reading. On the 25th that would have been 40% of the sample. The fix is not to ignore the error, because that returns us to blocked city equals empty city: a city that was not read is now recorded separately, and if more than one in ten are, the reading stops. Half a sample is worse than none, because it looks like a sample. The second rehearsal went all the way through and produced 62 measurements across 27 cities. A missing protection also went in: the merge step always wrote over the month's file without asking, so a half-finished harvest could have replaced the month feeding the published price with forty rows. And one last thing, which is not plumbing but a finding. Yesterday's Thessaloniki article rests on one ratio: how much of a portion the shop puts inside the pita. All its portion prices came from one platform, because it was the only one giving them. It was not the only one that could: the other two simply were not looking. The very same rule went in and 400 shops were re-read. 384 gave both prices, and the finding holds. The strong part is not the overall trend but the city-by-city comparison: across the ten cities present in both readings the ratios nearly coincide. Athens 0.376 against 0.381. Thessaloniki 0.511 against 0.527. Different platforms, different shops, same ratio. The check also found a hole in itself. It had been written to fire if the shops in the two readings were the same ones, because then the agreement would mean nothing, and it fired at once: 57 of the 384 are the same business on a second platform. The answer was not to loosen the test but to re-measure the finding without them. It holds, and slightly better. The check's raw data went into the repo, because otherwise the article would cite a file that does not exist. The article's chart now shows both readings. Filled circle for the first platform, hollow diamond for the other two, and where a city appears in both, a thin line joins them. The length of that line is the disagreement, and in most cities there is no visible line at all. The one long line is Heraklion, and it stays visible. And a question that deserved an answer in numbers: do we account for how many grams a portion is? No, and now we know exactly why we cannot. Across 220 shops and 29,233 items, reading descriptions as well, only 34 of 564 portions state a weight, and just 6 of 1,392 wraps. The wrap essentially never says what it weighs, and it is not for lack of room: 62% of items carry a description. Where they do say, 300 grams dominates, but the range runs 200 to 500. And the most important part is negative: those 34 weights sit in five cities only, so they are not enough to test whether the portion grows where it gets dearer. A new entry went onto the limitations page, with the numbers rather than an adjective. And three things found as the next reading was starting. The frame's own test wrote over the real saved frame, leaving its eighteen fabricated shops there: the reading would have started with eighteen candidates instead of two thousand two hundred, and would have looked fine. I caught it by looking at the file, not because anything fired, and now something fires. Second, the third platform does not write absence the usual way: for a shop that has closed it answers with a code we took for a temporary fault, so we asked again and again for two and a half minutes and then recorded it as unread. Six shops. Each platform now declares for itself how it says it does not exist. Third, useful for what comes next: the second platform serves item descriptions, the third none at all. So the grams question can be asked on two channels instead of one, and never on the third. The route I had proposed, the shops own websites, does not hold: across 353 shops six gave a price, and none gave grams. And the grams question was asked again on a second platform, so it now carries a test. Across 520 shops and nearly seventy-four thousand items, 75 portions of 1,329 state a weight, in ten cities. Wraps, six of 3,252, and on the second platform none at all, even though 95% of its items carry a description. Six cities have both a stated weight and a published portion price, and five of them state exactly 300 grams while their prices spread by 44%: Athens 10.90, Thessaloniki 9.50, Larisa 7.55. Dear cities do not sell a bigger portion, they sell a dearer one, which is exactly what the finding predicts. Six cities are not enough, though, and only from shops that bothered to state a weight: grams still do not enter the calculation. The raw data went into the repo together with its denominator, the items that do NOT state a weight, because otherwise the percentage would be a claim. And a fault in the published snapshot itself, found while preparing the new reading. One platform's city names did not pass through the map the other two passed through, so Kallithea, Megara and Eleusina stayed separate cities instead of joining Athens, and two places were counted under two names each. Four of the eighty cities were phantoms. Prices did not change, and I verified it row by row: the Athens median stays 4.20 euro, the factors for Thessaloniki, Patras and Chania are untouched, the national median identical. What changed is the city count, from 80 to 76, and with it five tables that read it. The snapshot was not re-read: the corrected map was applied to the names, with a check that halts if a single price moves. And a second reading was taken, one day after the first, to answer with a number something I had been answering with words. Three times I wrote that city medians would move once the sample grew. With time nearly held constant, what differs between the two readings is precisely that: the sample. The new snapshot has 1,660 rows instead of 1,287, and 1,564 portion prices instead of 489, now from three channels rather than one. The national median stayed 4.20 euro, and across the 1,283 shops common to both the price did not move at all: 99.7% unchanged in a day. The larger sample did not change the published figure. The city figures did move, and that is the interesting part. Where a city already had fifty shops or more, none changed. Where it had twenty, two of eight changed. Where it had three, like Drama, the median fell from 5.50 to 4.20 euro as soon as its shops became nine. Prices did not fall: the sample was far too small to say anything. And the moves go symmetrically up and down, so they are noise rather than a shift. Along the way a claim of mine fell, to the very test I wrote. Looking at eight large cities I had said only two moved. The test scans them all and found twenty-four of seventy-six: the eight I picked were the most populous, hence the most stable. And after all that, a decision. The city price tables came from the reading of the 7th; they now come from the one of the 8th, which is a superset of it, from the same day, and measured without bias. The alternative was publishing factors we know come from half a sample. The city table goes from 1,287 to 1,660 shops, and the portion table from 17 cities to 51, from 472 pairs to 1,518, and from one platform to three. The underlying relationship survived the tripling almost unchanged. The published price and index did not move at all: 4.25 euro and 218. The second-witness check was not dropped, it got better. Before it compared two different readings across ten shared cities. Now it compares one platform against the other two inside the same file from the same day, across thirty-one cities, and the two sides agree. Two cities disagree noticeably, on six and ten shops in one case and seven and four in the other, and they stay written down. Along the way it emerged that the merge step was throwing away the item name, which the raw files have carried from the start. The new snapshot had come out with no names at all, so the pita-or-sandwich analysis could not be recomputed from it. Now one hundred percent of rows carry a name, against eighty-six percent before. Published figures are unchanged: price 4.25 euro and index 218. The home page explains the index and wage basis, shows the latest year's figure and leads to the index, comparisons and data. The changelog groups changes into one entry per day and kind. Releases appear once per day, retaining legacy identifiers and notes. The home page now uses simply Gyronomics as its visible heading, browser title and sharing title in both languages. The index description remains below it.

  19. Improvementv2026.09-sarotis-arithmon

    Improvements

    • A scanner for numbers that go stale, not just for euros
    • The AI assistant is withdrawn, along with its two endpoints
    Read the full entry

    A scanner for numbers that go stale, not just for euros Within one day three spots on the site were found stating a stale number, and no test had caught any of them. The box explaining the latest revision had a heading from one change and figures from another. The example on the limitations page had the gyro price typed in by hand. And the label under the chart stated how many shops our own reading covers, also by hand. What they share is that someone copied a number that is computed elsewhere. A scanner for this already existed, but only for euro amounts: every wage appearing in copy is checked against the series. It was written after a sentence was found claiming the 2026 wage is 1,078 euros when it is 924. Counts and factors were not covered, and that is exactly where today's three appeared. The new scanner keeps a table of computed figures and scans reader-facing text. If it finds their value typed as a constant it fires, naming the file, the value, and where it should be read from. It scans only distinctive values, three digits and up or decimals with three significant figures. A bare forty-five appears in every other sentence, and chasing it would make the check noise rather than a guard. Three things are excluded on purpose. Code comments, which are documentation and often quote the wrong number deliberately to explain a fix. Release notes and the changelog, which describe the past and are allowed to state figures that no longer hold. And source citations, which describe one dated measurement. The single real finding was fixed: the chart label now reads the count from the observation itself. The AI assistant is withdrawn, along with its two endpoints The AI assistant page has been withdrawn. It was not only the menu link that went; the whole feature went: the page, its English version, the component that drew it, the server module and the two public endpoints that fed it. One took the question and forwarded it, the other recorded whether the answer helped. Removing the endpoints too was a deliberate choice. A public endpoint that spends credits and accepts free text from anyone, with no page using it, is not neutral: it is something you pay for that nobody sees. The same applies to the one that wrote to the database. The index, the prices and the data were not touched at all. No series and no number changed because of this. The site map is clean too: ai is out of the sitemap and out of the menu, so nothing points at a page that is gone. Anyone holding an old link will see a 404, which is correct for a withdrawn page rather than something to paper over with a redirect. Thirty-two tests went with it, the entire file that guarded the feature. That is right: tests with no code left to check guard nothing; they only inflate the count.

  20. Improvementv2026.09-katalogoi

    Improvements

    • 1980 got its own price-control order
    • The documentation grade now sits beside the number itself
    Read the full entry

    1980 got its own price-control order The four-year run from 1979 to 1982 has been broken. Rizospastis of Friday 28 November 1980, front page, under the headline “Souvlaki gets dearer”: “By price-control order souvlaki gets two drachmas dearer from tomorrow. From 12 GRD the souvlaki made of ‘gyro’ or beef patty becomes 14 GRD, and the pork souvlaki goes from 15 to 17 GRD.” The first figure is ours, because the “gyro souvlaki” is exactly the wrap the index measures. The second line is a trap worth naming: the “pork souvlaki” is not the bare skewer, it is the same wrap with a different filling. Taking it for a skewer would say the skewer cost more than the wrap, while in 1976 the opposite held. The rise covered one month out of twelve, so the year was weighted rather than pinned to either number. And because it is a ceiling rather than a free price, it took the same factor 1977 and 1978 already carry. Working out how to add it turned up something that had been hiding for a long time. 1978 had its own document all along, the 10 drachma ceiling, but the series did not stand on it: the single arc from 1977 to 1983 ran straight over and produced 10.9 drachmas instead of 11.1. Close by accident. It is pinned now, and something nice comes with it. With both 1978 and 1980 tied down, the 1979 freeze stops being an approximation: the 1979 price comes out exactly equal to 1978, as the May order of that year says. Five years moved, 1978 through 1982, and nothing else. 1978 and 1979 rise slightly, 1980 falls a little under five per cent, 1981 and 1982 fall less. There is a second report, from June 1981, deliberately not used as an anchor. It says the souvlaki price is being freed onto a whole mathematical cost formula and that, as the deputy minister admitted, it will rise by two to three drachmas. A minister's forecast is not a measurement. It went in as a source, because it opens a question one newspaper page cannot close: we say the cost formula arrived in 1989, the paper says eight years earlier. The same round also checked the euro decade, the years 2003 to 2010 that come out of arithmetic rather than a document. Two independent guide series say the level holds, so nothing moved there. And something about Thessaloniki, which a tester asked for. Seven photographed price lists from the same gyro shop, 2006 to 2016, price the same filling in three bread formats: pita, lagana, Cypriot. The lagana is seventeen per cent above and the Cypriot twenty-six, stable across a decade. Neither exists in Athens. So any survey measuring “the gyro wrap” without saying which bread can read Thessaloniki up to a quarter higher with no real price difference at all. There is a second, linguistic trap too: in Thessaloniki “souvlaki” means the skewer and the wrap is called a “sandwich”, while in Athens it is the other way round. Finally a fix a tester reported: the menu did not work on desktop. The button opened normally but nothing showed, because the horizontal scroll added to stop the navigation overflowing was clipping the dropdown. Three of the seven nav items are groups, so half the menu was dead on every desktop. The documentation grade now sits beside the number itself A small change, but the kind that changes how a page reads. The three big numbers at the top of the index read like measurements, while they are not equally solid. Some come from a documented price that exists in a newspaper or a price-control order, some from interpolation between two documented points, and some from projection beyond the documented range. The confidence grade was already computed for every year and showed in the data table, several scrolls below the numbers most people actually look at. It now sits beside the number itself, as a small badge in the grade's colour, with the full wording appearing on hover. Along the way a stale figure turned up in the index's metadata: it advertised forty-two years of purchasing power, while the series runs fifty-one. And one thing that was tried and not kept, because that is worth saying too. Testers suggested making the Pita-Gyro Index the homepage, arguing that the reverse question needs a lot of explaining for a first-time visitor. We tried it and rolled it back the same day. The homepage stays Reverse Gyronomics and the index stays at its own address, as before. No price, wage or index changed.

  21. Improvementv2026.09-apokomma

    Improvements

    • A price turned up inside the gap, and we did not make it data
    • The chart drew three lines where there is one measurement
    • The chart stops showing 1985 as confidently as 2025
    Read the full entry

    A price turned up inside the gap, and we did not make it data A reader sent in a period newspaper clipping. It says souvlaki, kokoretsi and the oil-based dishes served in restaurants get more expensive from Monday 7 November, and that souvlaki in a pita goes from 65-70 drachmas to 75-80. It is the first wrap price ever to turn up inside the eleven years for which we have no source at all. The clipping has no date, so the year had to be worked out first. In the drachma period 7 November falls on a Monday only four times: 1977, 1983, 1988 and 1994. 1977 is out because we have a documented price order of ten drachmas. 1983 would mean that in 1989 the price was double what the price-control order of that year sets. 1994 would mean a price cut. That leaves 1988, and the post-increase price is exactly the price set by the 1989 order six months later. Then came the check that mattered. We took the documented 1977 price and carried it forward to 1988 with headline CPI alone, ignoring the 1989 anchor entirely. It came out at 68.0 drachmas. The clipping says 65-70. An error under one percent on an eleven-year projection, and not a circular one: the year was found from the calendar and the two documented anchors, not from the path being tested. And still it did not go into the data. The clipping carries no newspaper, date or page, so the year is our inference rather than a statement by the document. A site that asks others to show their gaps does not anchor on an anonymous image. 1988 stays without a source, the gap stays eleven years, no figure changed. We also looked for the price-control order itself in the government gazette and did not find it: the 1989 order repeals all earlier ones without listing them, and the National Printing House offers no open full-text search for 1988 issues. That failure is recorded too, so the same work is not done twice. All of it is now on the "What we do not know" page. The chart drew three lines where there is one measurement In the previous release the chart's main line became dashed, to declare that in most years the price is interpolated. A correct declaration, but the chart became hard to read, and looking into why turned up something worse than aesthetics. The chart also shows two hypothetical scenarios, "if it had followed headline CPI" and "if it had followed food-service CPI". Those start from a given year. Before it they hold exactly the same value as the index: in 1983 all three series give 500. So for twenty-three of the fifty-one years the chart drew three lines, in three colours, on top of each other. And because the second hypothetical was drawn last, what you saw as the index across the left half was not the index. It was the hypothetical painted over it. Colour made it worse: the hypothetical sat at hue 22 next to the brand orange at 50, and was more saturated than the real thing. In a thin dashed line on a phone that is the same colour. The scenarios now appear only from the year they diverge, keeping the last shared point so the branch is visible. No year is written by hand, the comparison is made on the values. The index stays dashed but is now the heaviest layer on the chart and is drawn above everything, and the second hypothetical moved to violet. Along the way I created a bug: once the index values became nullable, the tooltip would have shown an empty index for twenty-three years whenever a hypothetical scenario was selected. The tooltip now reads the raw value from its own key. No price and no index changed. The chart stops showing 1985 as confidently as 2025 The site asks everyone to show their gaps. Its own main chart was hiding them. Every year carries a documentation grade from A to D. An A means there is a real price from a source of the time. A D means there is nothing at all and the number is interpolated between two distant points. The grade showed in the table, it showed in the tooltip, but the line was drawn solid and at the same weight across all fifty-one years. So 1985, for which we have not a single price, was drawn with the same confidence as 2025, where we have official figures. And it is not one year: from 1978 to 1988 there are eleven consecutive years at the lowest grade. From today the line is dashed where the price is computed, and solid with a dot only on the sixteen years that have a documented price of their own. Something we did not design also falls out of the data itself: years that come one after another join into a solid run, while isolated ones stay as bare dots. So you can see at a glance that the last decade is measured almost throughout, while the 1980s hang from two points. It is the density of our sources, drawn, with no caption needed. A new legend entry explains what the dashed line means and names the gap, because otherwise the change would read as decoration. Two things took time and are worth writing down. An isolated documented year produces a zero-length line, an invisible one, so without the dots only the last decade would show and the chart would lie in the opposite direction. And with animation enabled the library rendered no dots at all on a series with gaps. Finally, a mistake of my own that the test of the tests caught. I wrote seven deliberate defects to see whether the new checks catch them. Two passed silently, because the check looked from the line's position to the end of the file, and the same words also appear further down on another line of the chart. So it was guarding something it was not guarding. Fixed. No price, wage or index changed. Only how much the chart claims.

  22. Improvementv2026.09-hygiene

    Improvements

    • The footer icon weighed more than the rest of the site
    • Prices from the drachma years are now accepted
    Read the full entry

    The footer icon weighed more than the rest of the site Nothing in this round changes a figure. It is the pass over the whole app, asking what the visitor pays for without seeing it. The icon in every page's footer was an 816 by 816 pixel image weighing 561 kilobytes, displayed at 24 pixels. It downloaded in full, on every page, on every visit. It is now 4 kilobytes - the same icon, four hundred times lighter, and the whole site ships half a megabyte less. Second, the file that tells search engines what is allowed said two different things depending on who asked: it had a separate rule for twelve known bots and a general rule for everything else, and the standard says each bot reads ONLY its own. The ban on the admin pages therefore applied only to bots nobody had named. The data here is open, so there is now one rule and it says "everything is allowed" - the admin pages were protected by the database anyway, not by that file. Third, a public endpoint returned the raw error message of the service it calls behind the scenes; it now keeps that for the logs. Fourth, the form that rates the assistant's answers wrote to the database with no cap at all. Fifth, four tables did not tell screen readers which header belongs to which column, and one filter announced itself as a bare "combo box". Finally, 4,257 lines of code nobody used and 37 libraries no file imported were removed: less code means fewer places where something can quietly break. Prices from the drachma years are now accepted The price form offered years from 1976, but the database only accepted 1984 onwards. Anyone picking an older year - exactly the years for which people's memory is the most valuable source we have - was told "that year is not accepted" for a year the form itself had offered them. The database range now matches the series, accepting 1976 to 2030. Two protections that were missing entirely came with it: a cap on submissions per hour, so the public list cannot be filled from a single source, and rejection of identical reports sent twice by accident. The cap stores no network address: only a non-reversible fingerprint, which expires on its own.

  23. Improvementv2026.08-consistency

    Improvements

    • The consistency check claimed 1250 checks while 494 ran
    • The contributions column in the calculations showed negative percentages
    • The price form could not be submitted the way it opened
    • The Greek Gyro Day page printed its dates in English
    • The calculator told someone on the minimum wage they were below the minimum wage
    • The homepage now answers its own question - and a wrong wage figure was corrected
    • The switch that rewrote every figure was hidden - and one scenario would not open at all
    • The index peak is no longer presented as a certainty
    Read the full entry

    The consistency check claimed 1250 checks while 494 ran The page that exists to prove the numbers agree had a problem with its own number. The count was not measured but computed from a hand-written formula that had already gone stale: three quarters of the figure was the number of strings being scanned, counted as if each were a check. Scanning a string that contains no number is not a check. Meanwhile the exports, where the most substantial work happens, were undercounted by a hundred and fifty-three. The counter now increments as each comparison runs, and the number you see is the number that ran. Second: the report showed a "Table" card with a permanent green zero, but no check ever emitted anything for the table. On this page a zero reads as "checked, clean" when it meant "never looked at". Real checks went in: the per-row provenance notes of the table are now verified to quote the same figures as the row. The first run found an error immediately: the price-control era note quoted an uplift of one point two, the old assumed value that had been replaced by the measured one - and it lived inside the check file itself. Third: no wage amount was ever checked, because the engine explicitly skipped anything outside the gyro price range. That is exactly where a real error had lived, copy stating the wrong 2026 wage. A wage check went in, and was extended at build time to the hard-coded copy inside components, which the engine cannot see from the browser. Finally, the cards now show how many checks ran and how many deviations were found, and the page states plainly what is covered and what is not. The contributions column in the calculations showed negative percentages On the page that exists precisely to show that the numbers add up, the second column of the main table stated that 2026 social contributions are minus 0.49 percent. For 2011 it said 2 percent when the rate is 16. Eighteen years showed a negative figure and forty-nine of fifty-one disagreed with the wage table further up the same page, where the same quantity appeared correctly. The cause was that the percentage was not read from the data but derived by comparing two quantities on different bases: the comparable monthly wage, which includes the fourteen-payment multiplier, against the gross per payment. From 1981 onward the ratio exceeded one and the result went negative. The column now shows the declared rate for the year, and the missing step was added: you can now see 920 euros gross, minus 13.87 percent in contributions, equals 792.40 per payment, times 1.1667 for the fourteen payments, equals 924.46 comparable per month. The whole chain reproduces by hand. Second: the methodology stated that a x1.2 uplift is applied during the price-control era, with +15 percent printed next to it - two figures that contradict each other. The real coefficient is 1.154, measured from the 1989 price-control order, and 1.20 is exactly the old assumption that measurement replaced: the methodology page was undoing the correction it documents. It now reads x1.154 (+15.4%). The same text goes into the methodology PDF that anyone citing us downloads. Alongside this, every number in the methodology is now written with a Greek comma instead of a dot. The price form could not be submitted the way it opened The form opened on the year 1976 with the drachma selected. The database, however, only accepted 1985 onward, so anyone who filled in a price and pressed submit without changing the year got an error - and it was the raw database text, in English. Nine of the years the menu offered were rejected outright. The range is now aligned so the menu shows exactly what the database accepts, and the error messages are written in both languages. The form opens on the current year in euros, and switches to drachmas by itself if you pick a year before 2002. Second: the page showed three different statistics for the same data. The per-year chips and the city table computed a plain average with no threshold, while the comparison layer below them used a median and required at least three reports. The result was that a single anonymous report appeared as an average - in the city table 23 of 24 cities had exactly one. The whole page now measures the same way, and where the sample is small we show the count instead of a figure that does not stand. Cities also match regardless of accents now: two spellings of Thessaloniki were counted as two different places. Third, the English and Greek "1 reports" was fixed. And finally, abuse protection went in: a cap on submissions per hour, rejection of identical reports, a hidden trap field for bots and a short pause after each submission. The Greek Gyro Day page printed its dates in English The hero read "21 February", the months were "J F M A M J J A S O N D" and every table row "22 January". The cause was a comparison that could never be true: the code checked whether the language was "el" while the value it held was "el-GR". The same mistake was found on the Gyro Index, where the historical milestones showed in English - "Accession to the EEC" instead of the Greek text - even though the Greek strings had always been there. All three places were fixed, and checks that scan the source now block it from coming back. Second: the chart left 85% of its width empty. Because the scale spanned a whole year while every Gyro Day falls in January or February, the bars were stubs on the left and ten of the twelve months labelled nothing. The scale now stops a month past the latest date and the differences are visible. Third: the note said the annual wage was "12 monthly wages". The calculation actually uses annual income across 14 payments. Anyone following the wording literally, multiplying their take-home by 12, landed on 2 March instead of 21 February - nine days out. Fourth: the page compared the 1976 wrap with today's as if they were the same product, so 1976 came out as 22 January instead of 12 February and the decline looked three times worse than it is. Finally, the 2030 outlook rested on three hand-written rates, with the "base" case assuming wage and price grow alike - the one thing that happened in no recent window. The scenarios now come from the series itself, and the outlook finally answers in a date, not only an index. The calculator told someone on the minimum wage they were below the minimum wage The field asks for your "net monthly wage". Someone on the minimum typed what they actually receive, 792.40 euros, and the page answered: index 184, gap versus the minimum minus 31. The cause was that the series 215 is measured on the 14-payment basis (924.46 euros) while the visitor was giving a contract monthly figure - two different bases compared as one. The page now carries the same wage-basis switch Reverse Gyronomics already had, with the conversion spelled out. Second: the Greek "1.500" was read as one and a half euros and produced an index of zero - the field now accepts all four notations. Third, and the most awkward: the sentence "your wage has the same purchasing power as year X" was stated unconditionally, even when the gap was 2.3 times. At 400 euros the page claimed you had the same purchasing power as 213 gyros. It now applies only within 5%, and otherwise says plainly "closest year" or that you are above or below every year in the series. In the Time Machine the label read "classic wraps" while the number was wraps of that era: 1976 showed 527 classic, at the same time as the homepage and the Gyro Index said 264 for that same year. Each unit now carries its own name, and a fourth card shows the conversion into present-day wraps. The "how much work a gyro costs" section now measures classic equivalents and starts at 1989, because the 40-hour week applies from 1984 and earlier the week was 45 hours. Finally, you can now share your own result with a link. The homepage now answers its own question - and a wrong wage figure was corrected The homepage headline asks "how high should the minimum wage be?" and the first screen contained no number at all: after the title came a birth-year card, then three controls. The answer appeared further down, without even a heading of its own. It now comes first, in one sentence: for the wage to buy as many gyros as it did in 2011, it would have to be 1,780 euros net - it is 924. The controls moved below it, together with four milestone-year buttons (1989, 2002, 2011, 2019). A trap was fixed too: entering your own target locked the year selector with no way to unlock it. More seriously, the wage-basis explanation was a revision out of date and stated the wrong amounts - that the 2026 wage is 1,078 euros on the 14-payment basis and 924 on the contract basis. The correct figures are 924.46 and 792.40. They are no longer written by hand; they are computed from the series. Also: the three purchasing-power stories rested on 1985 and 2010, two of the weakest years in the series - they moved to 1989, 2002 and 2019, which carry documented prices, and every claim now shows its confidence grade. The "what the wage bought" strip showed 527 gyros for 1976 while the tool just above said 264 for the same year: two different units with no label, now both count classic wraps. Finally, the English edition printed amounts in Greek format, so "1.780 €" read as one euro seventy-eight. The switch that rewrote every figure was hidden - and one scenario would not open at all Two things on the Gyro Index page were not working as they should. First: the "classic wraps / era wraps" choice rewrites every number on the page - the 1976 index goes from 264 to 527, the peak from 500 to 867 - yet it sat inside the chart toolbar, below the cards it was changing. It moved directly above them, so cause and effect are visible together. Second, and worse: the "catering CPI" scenario was drawn on the chart and listed in the legend, but had no button - there was no way to turn it on. It now opens, and shows something worth seeing: had the gyro followed the official catering price index instead of its actual path, the 2026 index would be 472 rather than 215. Alongside, the update note became a single line linking to the data releases instead of eight lines of methodology between the figures and the chart, and the legend now separates the three primary lines from the hypothetical scenarios. No change to the data. The index peak is no longer presented as a certainty We scored how solid each year of the series is and found something uncomfortable: the year of greatest purchasing power, 1983, is also the WEAKEST documented year in the whole series - a score of 12 out of 100. The years 1978-1988 carry no direct price observation at all; they are interpolated between the 1977 and 1989 price orders, with a +/-35% uncertainty band. We searched statistical bulletins, newspaper archives and market-order texts for evidence from that period and found none. So rather than present a precise figure that cannot carry its own weight, the "Peak" card now shows the range and the confidence grade: 500, range 371-770, grade D. And we add the useful part: counting ONLY documented years, the peak is 491 in 1989 - just 2% lower. In other words the finding "purchasing power peaked in the 1980s at around 500 wraps" holds; the specific year does not, and we say so.

  24. Improvement

    Improvements

    • New structure: a page per tool
    • City prices with year selector

    New structure: a page per tool The home page now leads with Reverse Gyronomics (how high the wage should be). The classic Pita-Gyro Index moved to /gyro-index, and each tool got its own page: /calculator, /gyro-day, /data, /prices, /faq. A navigation bar is now on every page. City prices with year selector The city heatmap now shows the average reported price only for the year you pick, so comparisons make sense.

  25. Improvement

    Improvements

    • Move to gyronomics.gr
    • Accessibility and CSV export

    Move to gyronomics.gr All links, the sitemap and metadata now point to gyronomics.gr for better search ranking. Accessibility and CSV export Animated count-up stats, ARIA live regions, sortable table columns and a CSV export button for 1985-2026.

Price and wage coverage: price collection of September 2026, catering CPI to August 2026, minimum wage in force since 1 April 2026. Dataset version 2026.10.10-monthly-bulletin, last updated 2026-10-10.