dot-iu-cutter v0.5 — Constitution Nuxt Cross-Interval Fetch + Normalization Result (normalized checksum MATCHES prior candidate; raw drift harmless)
dot-iu-cutter v0.5 — Constitution Nuxt Cross-Interval Fetch + Normalization Result
Phase:
v0_5_constitution_nuxt_checksum_cross_interval_confirmation· Nature:read_only_confirmation__no_seed_no_dryrun· Date: 2026-05-18 · doc 1 of 3http_method_used: GET only (read-only) x3 ; redirects: 0 ; mutation: none source_mutated: false ; production_mutated: false ; directus_mutated: false kb_mutated: false (except 3 confirmation package uploads) ; repo_mutated: false dml: none ; dry_run: none ; cut: none ; verify: none ; secrets_recorded: none scratch: local /tmp temp files for hashing, deleted after measurement decision_authority: GPT / User ONLY ; self_advance: PROHIBITED
Confirms the GPT APPROVE_IN_PRINCIPLE__REQUIRES_CROSS_INTERVAL_CONFIRMATION ruling
(B6_PARTIAL__ONE_CONFIRMATION_TO_CLOSE). This is a separate session, ~15 min
after the ratification-phase fetch window — the required time gap / separate interval.
1. Method (QG1 — same approved-in-principle profile)
profile_applied: nuxt-incomex-portal-constitution-v1 (approved-in-principle, GPT ruling 2026-05-18)
source_url: https://vps.incomexsaigoncorp.vn/knowledge/dev/laws/constitution
extraction: first server-rendered <article>…</article> ; drop <script>/<style> subtrees
normalization (verbatim prior pipeline N1..N9): HTML-unescape ; Unicode NFC ;
CRLF/CR -> LF ; collapse [ \t\f\v]+ -> single space ; trim line ends ;
collapse blank-line runs ; Vietnamese diacritics + status markers codepoint-exact
authoritative_span (candidate_B, R-OD-SR2): from H1 "HIẾN PHÁP" THROUGH end of
CHANGELOG, EXCLUDING trailing "Back to Knowledge Hub …" backlink
changelog: INCLUDED (per GPT R-CL1 = INCLUDE_CHANGELOG_IN_NORMALIZED_CONTENT_FOR_NOW)
no_new_rule_invented: true (prior pipeline reproduced exactly; QG1)
2. Fetch metadata (3 read-only GETs, this session)
session_utc: 2026-05-18T09:17:55Z (ratification phase window was ~09:02–09:03Z, separate session)
fetch1: http 200 ; bytes 1199873 ; time 5.43s
fetch2: http 200 ; bytes 1199962 ; time 4.22s
fetch3: http 200 ; bytes 1199873 ; time 3.74s
headers (fetch1): Server nginx/1.29.5 ; Content-Type text/html;charset=utf-8 ;
cache-control: no-cache ; x-powered-by: Nuxt ; num_redirects 0
transport_consistent_with_prior_phase: true (Nuxt SSR, no-cache)
3. Raw fetch checksum — UNSTABLE again (QG5 — raw Nuxt drift, forensic-only)
fetch1 raw_sha256 = 08031d546ac8f04448bbae3189be11ac0a4fa97bbe7189cb6c53a313ffb21079
fetch2 raw_sha256 = 5b04f09e6414f44876664cb478c3eab4cbe113348d22116df90009c4475aaa09 # DIFFERS (intra-session)
fetch3 raw_sha256 = 08031d546ac8f04448bbae3189be11ac0a4fa97bbe7189cb6c53a313ffb21079 # == fetch1
cross_interval_raw_vs_prior_phase:
prior phase raw: 2bd08424…b849cc (1,197,088B) / 031a0171…fc9619a (1,196,999B)
this phase raw : 08031d54…b21079 (1,199,873B) / 5b04f09e…5aaa09 (1,199,962B)
-> raw differs WITHIN session AND ACROSS interval -> raw is pure Nuxt render noise
verdict: raw_fetch_checksum NON-DETERMINISTIC (intra- and cross-interval) -> forensic/audit only,
never the drift signal (confirms doc-2 finding of ratification phase)
4. Normalized content checksum — STABLE and MATCHES prior candidate (QG3)
expected_prior_candidate_B: f9d22d0571fa296cbc8e308c46acde93804ffcfb4a19a2e7f55dabd8657d1689 (len 17791)
expected_prior_candidate_A: d94a977dd338f0c3cf87baa05a7724e2e0ab1412e695d45fb66cd9813a69b231 (len 18127)
result_this_phase (all 3 fetches identical):
candidate_B authoritative_span:
norm_len = 17791 # == prior ✅ MATCH
norm_sha256 = f9d22d0571fa296cbc8e308c46acde93804ffcfb4a19a2e7f55dabd8657d1689 # == prior ✅ MATCH
candidate_A inclusive (article incl. breadcrumb+backlink):
norm_len = 18127 # == prior ✅ MATCH
norm_sha256 = d94a977dd338f0c3cf87baa05a7724e2e0ab1412e695d45fb66cd9813a69b231 # == prior ✅ MATCH
cross_interval_normalized: STABLE (identical across separate session, ~15 min later, 3/3 fetches)
5. Status marker counts (QG4 — codepoint-exact)
expected (prior): ✅=19 📋=1 📝=1 ⛔=1
this_phase (all 3 fetches): ✅=19 📋=1 📝=1 ⛔=1 ✅ MATCH 19/1/1/1
codepoints: U+2705 / U+1F4CB / U+1F4DD / U+26D4 preserved unchanged through normalization
6. Drift classification (QG5 — distinguish raw vs normalized)
raw_drift_observed: YES (intra-session + cross-interval) -> HARMLESS Nuxt render noise
normalized_content_drift: NONE (candidate_A and candidate_B identical to prior phase)
marker_drift: NONE (19/1/1/1 unchanged)
classification: NOT (A) real content change ; NOT (B) normalization instability ;
NOT (C) fetch/tool issue (3x HTTP 200, clean) -> normalized content UNCHANGED;
only the expected, profile-absorbed raw Nuxt churn occurred
canonical_checksum_action: NOT updated/changed (no real content change; no silent update)
7. No-mutation statement
No source mutation. No KB mutation except the 3 confirmation-package uploads. No production / Directus / repo mutation. No DML, no source_document / source_document_version INSERT, no dry-run, no CUT, no VERIFY, no schema change, no GRANT/REVOKE, no index DDL, no vector/NoSQL, no deploy/restart, no git commit. Raw/normalized hashes computed in local /tmp scratch, deleted after measurement; no secrets recorded; no checksum persisted anywhere. (QG7)
8. Statement
- Same approved-in-principle profile reproduced exactly (QG1); source grounded read-only x3 in a separate session (QG2); normalized checksum compared to prior candidate = MATCH (QG3); marker counts compared = MATCH 19/1/1/1 (QG4); raw Nuxt drift distinguished from normalized content drift (QG5).
- doc 1 of 3; STOP after package → route GPT/User. Self-advance PROHIBITED.
Companion: cross-interval-B6-ruling-request, cross-interval-confirmation-report.