KB-10F8
dot-iu-cutter v0.5 — Constitution Nuxt parser_profile "nuxt-incomex-portal-constitution-v1" + B6 Ruling Request (recommend PARTIAL→Option B)
8 min read Revision 1
dot-iu-cutterv0.5constitution-fixturenuxt-parser-checksumparser-profileruling-requestb6-partialroute-gpt-userdieu442026-05-18
dot-iu-cutter v0.5 — Constitution Nuxt parser_profile + B6 Ruling Request
Phase:
v0_5_constitution_nuxt_parser_checksum_ratification· Nature:ruling_request__no_execution· Date: 2026-05-18 · doc 4 of 5decision_authority: GPT / User ONLY. Agent recommends; decides nothing silently. dml: none ; source_seed: none ; parser_profile_registered: false ; dry_run: none self_advance: PROHIBITED
1. Proposed parser / normalization profile
parser_profile_ref: "nuxt-incomex-portal-constitution-v1"
applies_to_source_family: internal_incomex_constitution
source_type: html / nuxt_ssr (server: nginx/1.29.5 ; x-powered-by: Nuxt ; cache-control: no-cache)
extraction_rule:
outer: first <article> (≡ <main>) on route /knowledge/dev/laws/constitution
authoritative_span: H1 "HIẾN PHÁP KIẾN TRÚC HỆ THỐNG INCOMEX — v4.6.3 BAN HÀNH"
.. end of CHANGELOG ; EXCLUDE trailing "Back to Knowledge Hub …" backlink
excluded_selectors_rules:
- <head> <script> <style>
- window.__NUXT__ , <script type="application/json" id="__NUXT_DATA__"> hydration JSON
- top breadcrumb (Knowledge / Phát triển / Laws / …)
- trailing "Back to Knowledge Hub knowledge/dev/laws/constitution.md"
- portal header/footer/nav/aside shell, asset/build-hash URLs, renderer-injected clock
normalization_steps: N1..N9 (doc 3 §3) — UTF-8 / isolate-span / detag+unescape /
NFC+stripBOM / CRLF->LF / collapse-hspace / trim-lines / collapse-vspace /
preserve diacritics + status markers codepoint-exact (doc 3 §4)
checksum_algorithm: sha256(UTF-8 of normalized authoritative span) -> content_checksum
; sha256(raw bytes) -> raw_checksum (provenance only)
failure_conditions: FAIL_NO_SPAN | FAIL_MARKER_LOSS | FAIL_HTTP | FAIL_NONDETERMINISM
-> all fail-closed BLOCKED (doc 3 §6) ; DRIFT -> new version + review (not failure)
operator_error_messages:
BLOCKED_NONDETERMINISTIC: "cannot pin Hiến pháp version deterministically — parser/checksum profile not ratified. No cut performed."
FAIL_DRIFT: "Hiến pháp content changed since registered version v<old>; new version proposed, cut withheld pending review."
FAIL_NO_SPAN: "Hiến pháp authoritative content span not found at source — no cut, escalate."
evidence_of_soundness (doc 2): under candidate span, normalized sha256
f9d22d0571fa296cbc8e308c46acde93804ffcfb4a19a2e7f55dabd8657d1689 was identical
across 3 same-session fetches while raw sha256 changed -> mechanism proven.
2. How to store / reference the profile later
problem: LIVE WS-Q5 schema has NO parser_profile table and NO parser_profile_ref column
on source_document_registry / source_document_version_registry (MISMATCH-5, confirmed).
options:
PP-1a (recommended, low-friction): record parser_profile_ref +
normalize_profile string inside source_document_version_registry.provenance jsonb
(forensic + reproducibility metadata; identity stays content_checksum). No schema change.
PP-1b: author a separate parser_profile_registry table first (schema change ->
its own design/dry-run/command-review gate) before any source seed. Higher cost,
cleaner long-term governance.
agent_recommendation: PP-1a now (provenance jsonb), PP-1b as a later optional hardening
item — do NOT block B5/B6 on a new table; no schema change is authorized here anyway.
3. How this supports the future one-command workflow
"Cắt Hiến pháp" -> resolve source_document (ICX-CONST) -> controlled GET ->
apply nuxt-incomex-portal-constitution-v1 -> content_checksum ->
compare to registered version:
== : proceed gated enacted_only cut -> concise PASS report
!= : new version row + review (FAIL_DRIFT) -> concise BLOCKED report
raw_checksum logged to provenance (audit), never compared for drift
=> deterministic, exception-only, no human checksum guesswork (doc 1 G1–G5).
4. B6 status recommendation
B6_Nuxt_parser_checksum_determinism: PARTIAL (was BLOCKED)
why_not_BLOCKED_anymore:
- determinism mechanism empirically PROVEN: normalized content checksum stable
across 3 re-renders despite raw volatility (doc 2 §5)
- authoritative span identified; full parser_profile + failure model specified
- status markers preserved codepoint-exact under normalization (grounded)
why_not_CLOSED_yet:
- stability shown only over ~20s same-session window; not across days / Nuxt
deploy / version bump (no source-side raw/export endpoint to anchor against)
- exact authoritative span (breadcrumb/backlink exclusion + SSR-vs-hydration
completeness) is a PROPOSAL needing GPT/User ratification (OD-SR2)
- PP-1a vs PP-1b storage decision open
5. Ruling request to GPT / User
REQUESTED_RULINGS:
R-OD-SR2: ratify authoritative-span = SSR <article> H1 .. CHANGELOG, excluding
breadcrumb + "Back to Knowledge Hub" backlink + Nuxt chrome/hydration (doc 3 §1–§2). Y/N.
R-CL1: confirm CHANGELOG is INCLUDED in content identity (recommended INCLUDE; it is
the document's own change ledger). Y / exclude.
R-PP1: choose profile storage — PP-1a provenance-jsonb (recommended) or PP-1b new
parser_profile_registry table first.
R-B6: choose ONE —
A. B6 CLOSED: profile/checksum stable enough; return to source_document seed authoring
(fill NO-DML-DRAFT placeholders under the ratified profile; still gated separately).
B. B6 PARTIAL (Agent recommendation): ratify OD-SR2/CL1/PP1 now AND require ONE more
cross-interval evidence run (e.g. re-fetch hours/days later, or after next deploy)
confirming the same normalized content_checksum, THEN B6 CLOSED -> return to seed.
C. B6 BLOCKED: require a source-side stable export / raw / canonical content API
before any checksum is trusted.
agent_recommendation: R-B6 = Option B (PARTIAL). Mechanism is proven; the only gap is
cross-time confirmation + span ratification — both cheap, neither requires faking a
checksum. Option A is defensible if GPT accepts same-session x3 stability as sufficient;
Option C is unnecessary (no source change required — normalization already absorbs Nuxt noise).
none_self_resolved: all rulings are FLAGGED requests; Agent took no decision.
6. Impact on source_document seed (B5)
on_R-B6 = A or B:
- the NO-DML-DRAFT version-row placeholders (content_checksum, document_version_id,
retrieval_timestamp, raw_checksum) become mechanically fillable from ONE controlled
GET under the ratified profile -> source_document + source_document_version seed
becomes command-review-ready (still atomic, still separately gated, enacted_only,
Điều 44 deferred — unchanged by this phase)
on_R-B6 = C:
- B5 remains blocked pending a source-side stable endpoint
no source seed is authorized by this document under any option.
7. Statement
- Parser profile
nuxt-incomex-portal-constitution-v1proposed with extraction/exclusion/normalization/checksum/failure/operator-message fully specified; grounded soundness evidence cited. Clear B6 recommendation: PARTIAL, recommend Option B (QG8). - Nothing executed; no source seed authorized (QG7). doc 4 of 5; STOP after package → route GPT/User. Self-advance PROHIBITED.
Companion: parser-operational-framing, source-grounding-and-repeatability, authoritative-extraction-and-normalization-design, ratification-report.