KB-1097

dot-iu-cutter v0.5 — Constitution Nuxt Cross-Interval Fetch + Normalization Result (normalized checksum MATCHES prior candidate; raw drift harmless)

6 min read Revision 1
dot-iu-cutterv0.5constitution-fixturenuxt-parser-checksumcross-interval-confirmationgroundingread-onlyb6dieu442026-05-18

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 3

http_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.

Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/v0.5-constitution-nuxt-checksum-cross-interval-confirmation/dot-iu-cutter-v0.5-constitution-nuxt-cross-interval-fetch-and-normalization-result-2026-05-18.md