assets/boards/flores_island/BRD_0001/CRITIC_CAPTIONS_2026-08-10.json
{
"record": "CRITIC_CAPTIONS_2026-08-10",
"board_id": "BRD_0001",
"subject_canon_id": "flores_island",
"reviewed": "docs/art_boards/flores_island/BRD_0001/content.json (uncommitted working-tree edits vs HEAD)",
"also_reviewed": [
"docs/art_boards/flores_island/BRD_0001/CAPTION_ORIGINALS_2026-08-10.json",
"docs/art_boards/flores_island/BRD_0001/verify_captions.py"
],
"critic": "fresh-context adversarial critic, canon loaded cold, 2026-08-10",
"arming_skepticism": "do the six rewrites preserve the graded content's meaning and does the gate pass unloosened",
"verdict": "GO-WITH-FIXES",
"verdict_summary": "The lane's central claim holds under audit: the gate source is byte-untouched, the six blocks pass the REAL gate as written with no fold, and all six Josh-graded originals are recoverable verbatim with valid shas. One rewrite (A3) lost a load-bearing claim that no other field on the board restored; the critic cured it inside the bar. Five of six passed unmodified.",
"per_caption": [
{
"option_id": "A1",
"leaf_path": "panels.A.options[0].rationale",
"ruling": "PASS",
"visible_chars": 195,
"len_orig_to_rewrite": "427 -> 195",
"one_line": "The argument survives whole - land already populated, the Manggarai ata pale-sina naming, all four addressed thresholds named, and the visitor left unaddressed by the parallel construction.",
"load_bearing_kept": [
"Flores read as its own cosmology holds it",
"the land is already populated",
"the Manggarai name them ata pale-sina, those on the other side",
"all four thresholds retained by name: spring head, tree, doorway, centre-stone",
"the visitor is the one without standing (carried by the semicolon parallel 'are addressed; the visitor is not')"
],
"texture_lost_not_load_bearing": [
"'persons who see us and whom we do not see' - the sight asymmetry; the invisible-other sense is still implied by 'those on the other side'",
"'this island has officials' - a rhetorical crystallisation of the ownership claim, which reading_commits_to (untouched) carries as 'the original owners'",
"'before a single human speaks' - the no-dialogue mechanism, carried by B1's untouched playability_claim ('no map, no dialogue and no quest marker')"
],
"inversion": "none",
"claim_not_in_original": "none"
},
{
"option_id": "A2",
"leaf_path": "panels.A.options[1].rationale",
"ruling": "PASS-WITH-NOTE",
"visible_chars": 192,
"len_orig_to_rewrite": "479 -> 192",
"one_line": "All four altitude bands and the cited Lio lake-naming survive; the explanatory bridge 'the Lio name those lakes by who goes to them' is gone, but the moral-altitude inference still stands on the surviving Tiwu Ata Polo naming, which is exactly the half the untouched citation_caveat certifies as cited.",
"load_bearing_kept": [
"the Sunda Arc's vertical island",
"all four bands: karst at Liang Bua, forest, ash on Inerie, colour-shifting lakes on top",
"the lakes' colour genuinely shifts",
"Lio attribution of the naming",
"Tiwu Ata Polo, the lake of the wicked dead",
"altitude is moral, not scenic"
],
"texture_lost_not_load_bearing": [
"'monsoon' from monsoon forest (recovered: 'monsoon' occurs 2x in content.json, in A2's own silhouette plate brief)",
"'scree' (recovered: 1x elsewhere)",
"'mineral' from mineral crater lakes - dropping it slightly REDUCES the uncited chemical assertion the caveat flags, so the trade favours the caveat",
"'a moral topography its own people already read' - the anti-imposition clause; the people-already-read-it claim is carried instead by the explicit 'The Lio name' attribution"
],
"note": "F2. 'The Lio name those lakes by who goes to them' occurs 0x anywhere in content.json after the rewrite. NOT CURED, deliberately: A2 has only 8 chars of headroom, and every candidate restoration cost one of the four altitude bands - trading one load-bearing loss for another is not a cure. The surviving text still earns 'altitude is moral ground' from a lake of the wicked dead at the summit, and the citation_caveat is explicit that the lake NAMING is the part of A2 its sources carry.",
"inversion": "none",
"claim_not_in_original": "none"
},
{
"option_id": "A3",
"leaf_path": "panels.A.options[2].rationale",
"ruling": "FIXED BY CRITIC (was FAIL on finding F1)",
"visible_chars": 194,
"len_orig_to_rewrite": "530 -> 195 (lane) -> 194 (critic)",
"one_line": "The lane's rewrite dropped what kind of institution the lingko IS, and no plate, caveat or adjacent field restored it anywhere on the board; the critic restored 'customary land tenure and irrigation' inside the bar, paid for with an apposition and an anchor that both recover elsewhere.",
"load_bearing_kept": [
"Flores as its people built it",
"settlement radiates from the compang",
"the lingko lodok fields fan below",
"the valley-floor (not doorstep) placement",
"Manggarai adat attribution",
"still worked today (as 'worked today')",
"RESTORED BY CRITIC: customary land tenure and irrigation"
],
"texture_lost_not_load_bearing": [
"'the communal stone platform-centre' apposition - recovered by A3's own third plate, 'The compang centre-stone itself'; 'compang' occurs 11x in content.json",
"'as Wae Rebo shows' - 'Wae Rebo' occurs 6x elsewhere in content.json including B3's untouched what_stayed_true",
"'seven conical five-storey mbaru niang in a cloud-forest bowl' - recovered: 'mbaru niang' 5x, 'five-storey' 2x, 'cloud-forest' 3x, 'seven' 5x in content.json",
"the closing 'human-made geometry laid over volcanic slope' thesis - carried by the untouched reading_commits_to and by the surviving opening 'Flores as its people built it'"
],
"inversion": "none",
"claim_not_in_original": "none"
},
{
"option_id": "B1",
"leaf_path": "panels.B.options[0].what_was_amplified",
"ruling": "PASS",
"visible_chars": 195,
"len_orig_to_rewrite": "383 -> 195",
"one_line": "The amplification set and its restraint clause both survive; the motion-exclusivity claim moves from the tied-cloth sentence up into the retained 'nothing else', which is where it now does the work.",
"load_bearing_kept": [
"contrast, air and motion at the addressed points, and NOTHING ELSE (the restraint clause, retained verbatim in force)",
"swept ground reads as a lighter disc from the ridge",
"cool air/spray at the spring head",
"the tied cloth as the moving element",
"the forest pushed darker"
],
"texture_lost_not_load_bearing": [
"'the only moving thing in an otherwise still frame' - the exclusivity is carried by the retained 'nothing else' in the opening clause",
"'a column of cooler air made visible by drifting spray' compressed to 'cool spray hangs'; the untouched what_stayed_true still names the real optic as 'contrast, humidity, wind'",
"'and denser', and 'so the ordered points sit inside it rather than beside it' - the compositional inside/beside relation is the largest single loss in B1, but the amplification it justifies (forest pushed darker) is retained and the untouched what_stayed_true governs it"
],
"inversion": "none",
"claim_not_in_original": "none"
},
{
"option_id": "B2",
"leaf_path": "panels.B.options[1].what_was_amplified",
"ruling": "PASS - cleanest of the six",
"visible_chars": 195,
"len_orig_to_rewrite": "257 -> 195",
"one_line": "Every claim survives; the only dropped word ('heightened') brings the text INTO closer agreement with the untouched what_stayed_true, which licenses compression of distance and tempo but not vertical exaggeration.",
"load_bearing_kept": [
"compression and tempo as the whole amplification",
"bands stacked so the climb from karst mouth to crater rim reads in one frame",
"the colour shift runs in minutes where the world takes months"
],
"texture_lost_not_load_bearing": [
"'and heightened' - and its loss is an improvement: what_stayed_true (untouched) permits only 'the compression of distance and the tempo of a real chemical process'"
],
"inversion": "none",
"claim_not_in_original": "none"
},
{
"option_id": "B3",
"leaf_path": "panels.B.options[2].what_was_amplified",
"ruling": "PASS",
"visible_chars": 194,
"len_orig_to_rewrite": "305 -> 194",
"one_line": "Density, depth, the fan-to-forest real edge and the clouded Wae Rebo bowl all survive; the provenance of the restored forest moves out of the caption but is held by the untouched altered_law.",
"load_bearing_kept": [
"density and depth as the amplification",
"the lodok fan runs down the valley to the pre-colonial forest",
"worked ground and standing forest meet as a real edge",
"the Wae Rebo bowl deepened with live cloud"
],
"texture_lost_not_load_bearing": [
"'the region page already restores by ruling' - the not-an-invention provenance is held by the untouched altered_law: 'a documented historical state reached through the chapter's own time-fluctuation window, not an invention'; the retained word 'restored' still marks it as a prior decision",
"'rather than as a modern remnant' - the positive claim ('meet as a real edge') is retained"
],
"inversion": "none",
"claim_not_in_original": "none"
}
],
"gate_check": {
"result": "PASS - THE GATE WAS NOT LOOSENED",
"gate_owner_module": "harness/site/photobook.py",
"gate_function": "prose_gate",
"limit_name": "VISIBLE_BLOCK_MAX",
"limit_value": 200,
"comparison": "strict: photobook.py:358 `if len(t) > limit`",
"gate_sources_untouched": {
"harness/site/photobook.py": "clean - `git status --porcelain` returns nothing; VISIBLE_BLOCK_MAX = 200 at photobook.py:62, unchanged",
"harness/boards/render_board.py": "clean - `git status --porcelain` returns nothing",
"note": "harness/site/ DOES carry other lanes' uncommitted edits (assets3d.py, build_progress_site.py, ledger.py). photobook.py is NOT among them - the gate module specifically is untouched."
},
"verifier_is_real_gate_not_reimplementation": {
"answer": "REAL GATE. verify_captions.py is NOT a private re-implementation.",
"evidence": [
"verify_captions.py:31-34 inserts harness/boards on sys.path and imports the shipping modules `render_board as RB` and `photobook` directly",
"verify_captions.py:50 reads the bar as `photobook.VISIBLE_BLOCK_MAX` - the file contains no hardcoded 200, so there is no number in it that could be raised to force a pass",
"verify_captions.py:58 calls `photobook.prose_gate(...)` itself rather than a len() test, and measures the body exactly as the page emits it (RB.publishable() then RB.E() html-escaping then photobook._plain())",
"This matters because render_board.py:1178-1179 warns in its own comment that a re-derived `len(body) > 200` test measures the wrong thing the moment a string carries an escaped character or a whitespace run - the verifier avoids exactly that drift"
]
},
"no_fold_laundering": {
"result": "PASS",
"detail": "The published page renders at 5092 bytes with 0 `<details class=\"more\">` folds, 0 gate findings as emitted, and 0 findings with folds bypassed. A page clean only because a fold hides an over-length block is the posture Josh's order superseded; the verifier separates the two and both are clean."
},
"measured_visible_chars_after_critic_fix": {
"A1": 195,
"A2": 192,
"A3": 194,
"B1": 195,
"B2": 195,
"B3": 194,
"bar": 200
},
"verifier_exit_code": 0
},
"originals_check": {
"result": "PASS - ALL SIX RECOVERABLE VERBATIM",
"sidecar": "docs/art_boards/flores_island/BRD_0001/CAPTION_ORIGINALS_2026-08-10.json",
"method": "independent byte-compare of every `original_text` against `git show HEAD:docs/art_boards/flores_island/BRD_0001/content.json`, plus recomputation of every sha256",
"originals_byte_identical_to_HEAD": "6 of 6",
"original_sha256_valid": "6 of 6",
"rewritten_sha256_valid": "6 of 6 (A3's row re-hashed by the critic after the F1 fix)",
"originals_untouched_by_critic": "re-verified after the fix: all 6 originals still byte-identical to HEAD with valid shas",
"recorded_lengths": {
"A1": "427 -> 195",
"A2": "479 -> 192",
"A3": "530 -> 194",
"B1": "383 -> 195",
"B2": "257 -> 195",
"B3": "305 -> 194"
}
},
"scope_check": {
"result": "PASS - NOTHING ELSE MOVED",
"method": "recursive structural diff of the whole parsed JSON against HEAD, checking added keys, removed keys, key ORDER, list lengths and every leaf value - not just the textual git diff",
"fields_changed_vs_HEAD": 6,
"changed": [
"panels.A.options[0].rationale",
"panels.A.options[1].rationale",
"panels.A.options[2].rationale",
"panels.B.options[0].what_was_amplified",
"panels.B.options[1].what_was_amplified",
"panels.B.options[2].what_was_amplified"
],
"keys_added": 0,
"keys_removed": 0,
"key_order_changed": false,
"git_diffstat": "12 +- (6 insertions, 6 deletions) - consistent with the structural diff"
},
"canon_check": {
"result": "PASS - NO CITATION CAVEAT OR CARE DISCLOSURE WAS SCRUBBED OR WEAKENED",
"detail": "The structural diff proves every citation_caveat, reading_commits_to, what_stayed_true, altered_law, playability_claim, plate and source_target is byte-unchanged from HEAD. The rewrite touched only the six prose bodies.",
"caveats_verified_intact": [
"A3 citation_caveat - the full 'THIS OPTION IS THE WEAKEST-CITED ON THE BOARD' disclosure, the Keo-source-standing-in-for-Manggarai defect, the named pending Erb anchor, and the REALM_DESIGN_PROGRAM 3.2 consequence: all present verbatim",
"A2 citation_caveat - the SRC_00193 AUTHORIAL-REBUTTAL disclosure, the 'no geological or limnological anchor for the Kelimutu colour set' admission, and the split between A2's cited cosmological half and its uncited geological half: all present verbatim"
],
"ethnographic_terms_preserved_in_the_captions": [
"Manggarai ata pale-sina (A1)",
"Lio Tiwu Ata Polo, the lake of the wicked dead (A2)",
"Manggarai compang / lingko / lodok / adat (A3)"
],
"care_tier_note": "The three cultures named (Manggarai, Lio, Keo) are living peoples under CVD 17.1 REPRESENT_WITH_CARE. The compression is of the design rationale's prose, never of an attribution: every culture-name and every indigenous term in the originals survives in the rewrites, and the critic's A3 fix ADDS specificity about a Manggarai institution rather than removing any. No source, use_class or caveat was softened.",
"hardline_check": "No CVD 17 hard-line surface is touched by any of the six blocks."
},
"findings": [
{
"id": "F1",
"severity": "MAJOR - cured by critic",
"status": "FIXED",
"field": "panels.A.options[2].rationale (A3, 'The worked fan')",
"finding": "The rewrite dropped the load-bearing characterisation of what the lingko institution IS. The original read 'a customary land-tenure and cooperative-irrigation system still worked today, credited to Manggarai adat'; the rewrite kept only 'Manggarai adat still worked today'.",
"evidence": [
"After the lane's rewrite, the strings 'land-tenure', 'cooperative' and 'irrigation' occurred ZERO times anywhere in content.json - verified by substring count over the full serialised document. Unlike every other compression loss on this board, nothing recovered it: not the three A3 plates (which carry only geometry - 'the radial ribs, the boundary planting, the dry-season crop palette', 'The compang centre-stone itself'), not the citation_caveat, not reading_commits_to, not B3.",
"A3's own untouched citation_caveat turns on this exact content: 'The lingko, the lodok fan and the compang are MANGGARAI institutions, and the Keo source is being used for the general people-to-land frame rather than for the institution actually being drawn.' With the function stripped from the body, the caveat's reference point had nothing in the caption to refer to.",
"A3's untouched reading_commits_to cashes the option out as the one that 'makes the Ch-3 land-pressure story legible as damage to a pattern the player already learned to read' - land PRESSURE bearing on a land-TENURE system. Reduced to a purely visual 'pattern', that payoff loses its subject.",
"The lane DISCLOSED this trade in its own compression_note ('the customary land-tenure and cooperative-irrigation system expansion ... dropped'), so this is a judgement the critic overruled, not a concealed defect. Credit where due: the disclosure is what made the finding cheap to make."
],
"fix_applied": "panels.A.options[2].rationale is now: \"Flores as its people built it. Settlement radiates from the compang and the lingko lodok fields fan to the valley floor below, Manggarai adat: customary land tenure and irrigation, worked today.\"",
"fix_cost_and_why_it_is_safe": [
"dropped 'stone centre' - the compang gloss is restored by A3's own third plate ('The compang centre-stone itself, at eye level'); 'compang' occurs 11x in content.json",
"dropped ', as Wae Rebo shows' - 'Wae Rebo' occurs 6x elsewhere in content.json including B3's untouched what_stayed_true and A3's first plate",
"'still worked today' -> 'worked today' - the living-practice claim is retained",
"'cooperative' could not be fitted; 'customary land tenure and irrigation' carries the institutional class, which is the load-bearing part",
"net: traded two glosses that recover elsewhere for one claim that recovered nowhere"
],
"post_fix_measurement": "194 visible chars against the 200 bar (was 195), verified through photobook.prose_gate, not a length test. Sits in the same 192-195 band as the other five rather than at the bar.",
"records_updated": "CAPTION_ORIGINALS_2026-08-10.json A3 row: rewritten_text, rewritten_sha256, rewritten_len_chars, rewritten_visible_len refreshed and compression_note amended to attribute the change to this critic record. The A3 original_text and original_sha256 were asserted intact before the write and re-verified against HEAD after it."
},
{
"id": "F2",
"severity": "MINOR - accepted, not cured",
"status": "ACCEPTED",
"field": "panels.A.options[1].rationale (A2, 'The ladder of stone and fire')",
"finding": "'The Lio name those lakes by who goes to them' - the naming-system generalisation that bridges three lakes to the moral-topography conclusion - occurs 0x in content.json after the rewrite. The conclusion now rests on a single lake name rather than on a naming practice.",
"evidence": [
"substring count of 'who goes to them' over content.json: 0",
"A2's plates carry only geological and photographic content ('The Kelimutu three-lake colour set at real saturation', 'A vent mouth in the rim rock') - none restores the Lio naming practice"
],
"why_not_cured": "A2 has 8 chars of headroom at 192. Every restoration candidate cost one of the four altitude bands (karst/Liang Bua, forest, ash/Inerie, lakes), which the untouched reading_commits_to relies on as the 'band law'. Trading one load-bearing loss for another is not a cure, and the critic's mandate is the smallest edit that CURES a finding.",
"residual_risk": "Low. The surviving text still earns 'altitude is moral ground' - a lake of the wicked dead at the summit is itself the argument - and A2's untouched citation_caveat certifies the lake NAMING as precisely the half of A2 its sources do carry, so the retained clause is the well-cited one.",
"recommendation": "Leave as written. If A2 is ever picked and the caption is reopened, restore the naming practice at that time."
},
{
"id": "F3",
"severity": "OBSERVATION - no action",
"status": "NOTED",
"field": "panels.A.options[2].rationale (A3)",
"finding": "The original hedged attribution 'credited to Manggarai adat' became the direct 'Manggarai adat', a small increase in assertive confidence in an option whose citation is the board's weakest.",
"evidence": [
"A3's untouched citation_caveat itself states flatly 'The lingko, the lodok fan and the compang are MANGGARAI institutions' - the repo's own un-hedged framing, so the rewrite agrees with the caveat rather than outrunning it",
"The hedge in 'credited to' was about SOURCE credit, and the entire source defect is disclosed at length in the untouched citation_caveat, which remains the load-bearing disclosure"
],
"action": "None. Recorded so a later reader does not rediscover it as a defect."
},
{
"id": "F4",
"severity": "OBSERVATION - no action, hygiene",
"status": "NOTED",
"finding": "The working tree carries substantial unrelated uncommitted edits from other lanes (49 files: harness scorecards, harness/site/assets3d.py, build_progress_site.py, ledger.py). None of them is a gate source and none touches this board.",
"evidence": "harness/boards/render_board.py and harness/site/photobook.py both return empty from `git status --porcelain`. The board directory shows only content.json modified plus the two new untracked lane files.",
"action": "The director should stage this caption work narrowly (the board directory only) rather than committing the tree, so the banked commit carries the caption claim and nothing else."
}
],
"files_written_by_critic": [
"docs/art_boards/flores_island/BRD_0001/CRITIC_CAPTIONS_2026-08-10.json (this record)",
"docs/art_boards/flores_island/BRD_0001/content.json (F1 fix: panels.A.options[2].rationale only)",
"docs/art_boards/flores_island/BRD_0001/CAPTION_ORIGINALS_2026-08-10.json (A3 rewritten_* fields + compression_note; originals untouched and re-verified)"
],
"critic_committed_anything": false,
"reproduce": "python docs/art_boards/flores_island/BRD_0001/verify_captions.py # exit 0"
}