chore: 문서 수정

This commit is contained in:
DongHyeonka
2026-07-29 18:29:25 +09:00
parent 3ac0a367dc
commit 4b7f1a90d2
29 changed files with 1594 additions and 747 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+32
View File
@@ -13,6 +13,11 @@ from claridoc.models import (
Severity,
SourcePack,
)
from claridoc.style_contracts import (
KOREAN_EXPERIENCE_CONTRACT_ID,
korean_experience_contract_applies,
plain_form_ending_locations,
)
from claridoc.utils import line_number, normalize_heading, strip_code_blocks, word_count
@@ -201,6 +206,27 @@ def lint_document(text: str, brief: Brief, outline: Outline, sources: SourcePack
),
)
break
style_contract_applies = korean_experience_contract_applies(brief)
plain_form_locations = (
plain_form_ending_locations(text)
if style_contract_applies
else []
)
if plain_form_locations:
add(
"STYLE002",
Severity.BLOCKER,
(
"Reader-facing Korean prose mixes plain declarative endings "
f"into the required 합니다/했습니다 style ({len(plain_form_locations)} occurrence(s))."
),
line=plain_form_locations[0],
suggestion=(
"Use 했습니다 for observed or performed work and 합니다 for "
"current behavior. Preserve quoted material and code unchanged."
),
)
long_paragraph_count = 0
crowded_paragraph_count = 0
long_sentence_count = 0
@@ -398,6 +424,12 @@ def lint_document(text: str, brief: Brief, outline: Outline, sources: SourcePack
"decision_section_count": sum(bool(section.decision_requirements) for section in outline.sections),
"numbered_steps": numbered_steps,
"formulaic_ordinal_opening_count": len(formulaic_ordinal_openings),
"style_contract": (
KOREAN_EXPERIENCE_CONTRACT_ID
if style_contract_applies
else "none"
),
"plain_form_ending_count": len(plain_form_locations),
"has_verification": has_verification,
"has_tradeoffs": has_tradeoffs,
"severity_counts": dict(severity_counts),
+87
View File
@@ -1,5 +1,8 @@
from __future__ import annotations
import re
from dataclasses import dataclass
from claridoc.models import Brief, DocumentType
@@ -35,6 +38,29 @@ Write Korean reader-facing prose as a supported first-person experience, not as
- Use conversational but disciplined Korean. A Korean developer should be able to say the sentence naturally to a colleague without turning it into forced colloquial speech.
"""
_PLAIN_FORM_ENDING = re.compile(r"(?<!니)다(?=[.!?](?:\s|$))")
_FENCE = re.compile(r"^\s*(?:```|~~~)")
_HEADING = re.compile(r"^\s{0,3}(#{1,6})\s+(.+?)\s*$")
_IMAGE_ONLY = re.compile(r"^\s*!\[[^\]]*\]\([^)]*\)\s*$")
_TABLE_DIVIDER = re.compile(
r"^\s*\|?\s*:?-{3,}:?\s*(?:\|\s*:?-{3,}:?\s*)+\|?\s*$"
)
_QUOTED_SPANS = (
re.compile(r'"[^"\n]*"'),
re.compile(r"'[^'\n]*'"),
re.compile(r"“[^”\n]*”"),
re.compile(r"[^\n]*"),
re.compile(r"「[^」\n]*」"),
re.compile(r"『[^』\n]*』"),
)
@dataclass(frozen=True, slots=True)
class ReaderProseSegment:
text: str
line: int
h2_title: str | None
def korean_experience_contract_applies(brief: Brief) -> bool:
if not brief.is_korean:
@@ -72,3 +98,64 @@ def revision_style_protocol(brief: Brief) -> str:
After resolving individual findings, recheck 문서 전체(the complete document) against `korean_first_person_experience_v1`.
Do not stop after adding one `저는` sentence. Confirm the opening and major transitions still form supported experience threads, all reader prose still uses `합니다/했습니다`, unfamiliar terms remain explained at first need, and no compliant section regressed during the whole-document rewrite.
"""
def reader_prose_segments(markdown: str) -> list[ReaderProseSegment]:
segments: list[ReaderProseSegment] = []
in_fence = False
current_h2: str | None = None
lines = markdown.splitlines()
table_lines: set[int] = set()
for index, line in enumerate(lines):
if not _TABLE_DIVIDER.match(line):
continue
if index > 0 and "|" in lines[index - 1]:
table_lines.add(index - 1)
table_lines.add(index)
cursor = index + 1
while cursor < len(lines) and lines[cursor].strip() and "|" in lines[cursor]:
table_lines.add(cursor)
cursor += 1
for line_number, raw_line in enumerate(lines, start=1):
if _FENCE.match(raw_line):
in_fence = not in_fence
continue
if in_fence:
continue
heading = _HEADING.match(raw_line)
if heading:
if len(heading.group(1)) == 2:
current_h2 = heading.group(2).strip()
continue
stripped = raw_line.strip()
if (
not stripped
or line_number - 1 in table_lines
or stripped.startswith(">")
or raw_line.startswith((" ", "\t"))
or _IMAGE_ONLY.match(raw_line)
or _TABLE_DIVIDER.match(raw_line)
or (stripped.startswith("|") and stripped.endswith("|"))
):
continue
prose = re.sub(r"!\[[^\]]*\]\([^)]*\)", "", stripped)
prose = re.sub(r"\[([^\]]+)\]\([^)]*\)", r"\1", prose)
prose = re.sub(r"`[^`\n]*`", "", prose)
for quoted_span in _QUOTED_SPANS:
prose = quoted_span.sub("", prose)
prose = re.sub(r"^\s*(?:[-*+]|\d+[.)])\s+", "", prose).strip()
if prose:
segments.append(ReaderProseSegment(prose, line_number, current_h2))
return segments
def plain_form_ending_locations(markdown: str) -> list[int]:
locations: list[int] = []
for segment in reader_prose_segments(markdown):
locations.extend(segment.line for _ in _PLAIN_FORM_ENDING.finditer(segment.text))
return locations
+393
View File
@@ -1,9 +1,270 @@
AGENTS.md
CHANGELOG.md
CLAUDE.md
LICENSE
Makefile
PACKAGE_MANIFEST.json
README.md
pyproject.toml
.agents/skills/revising-korean-technical-prose/SKILL.md
.agents/skills/revising-korean-technical-prose/agents/openai.yaml
.agents/skills/revising-korean-technical-prose/references/sentence-patterns.md
.run/executable-clean-architecture/assets/architecture-layered-2026-07-04.svg
.run/executable-clean-architecture/assets/architecture-three-lenses.svg
.run/executable-clean-architecture/assets/big-picture.svg
.run/executable-clean-architecture/assets/boundary-enforcement-ladder.svg
.run/executable-clean-architecture/assets/context-system-boundary.svg
.run/executable-clean-architecture/assets/decision-spectrum-1.svg
.run/executable-clean-architecture/assets/decision-spectrum-3.svg
.run/executable-clean-architecture/assets/enforcement-ladder.svg
.run/executable-clean-architecture/assets/hexagonal-ports.svg
.run/executable-clean-architecture/assets/idempotency-four-branches.svg
.run/executable-clean-architecture/assets/lock-timeout-routing-gap.svg
.run/executable-clean-architecture/assets/logical-four-rings.svg
.run/executable-clean-architecture/assets/mdc-request-lifecycle.svg
.run/executable-clean-architecture/assets/module-graph-measured.svg
.run/executable-clean-architecture/assets/module-vs-single.svg
.run/executable-clean-architecture/assets/outbox-state-machine.svg
.run/executable-clean-architecture/assets/outbox-two-paths.svg
.run/executable-clean-architecture/assets/production-vs-optin.drawio
.run/executable-clean-architecture/assets/production-vs-optin.svg
.run/executable-clean-architecture/assets/runtime-call-source-dependency.svg
.run/executable-clean-architecture/assets/runtime-seq-feed.svg
.run/executable-clean-architecture/assets/static-analysis-venn.svg
.run/executable-clean-architecture/assets/test-contrast.svg
.run/executable-clean-architecture/assets/test-taxonomy-layers.svg
.run/executable-clean-architecture/assets/three-gate-flow.svg
.run/executable-clean-architecture/assets/transaction-lock-independent-contracts.svg
.run/executable-clean-architecture/assets/bootstrap-dependency-guards/bootstrap-dependency-guards.svg
.run/executable-clean-architecture/assets/inbound-transport-boundary/inbound-transport-boundary.svg
.run/executable-clean-architecture/final/document.md
.run/executable-clean-architecture/final/.techviz/production-vs-optin/spec.json
.run/keycloak-four-patterns/brief.json
.run/keycloak-four-patterns/collected.develop.json
.run/keycloak-four-patterns/manifest.json
.run/keycloak-four-patterns/outline.json
.run/keycloak-four-patterns/outline.preliminary.json
.run/keycloak-four-patterns/sources.json
.run/keycloak-four-patterns/sources.manual.json
.run/keycloak-four-patterns/final/deterministic-lint.md
.run/keycloak-four-patterns/final/document.md
.run/keycloak-four-patterns/final/evidence-map.json
.run/keycloak-four-patterns/final/provenance.md
.run/keycloak-four-patterns/final/quality-report.md
.run/keycloak-four-patterns/final/.techviz/ap1-browser-bearer-flow/context.json
.run/keycloak-four-patterns/final/.techviz/ap1-browser-bearer-flow/prompt.md
.run/keycloak-four-patterns/final/.techviz/ap1-browser-bearer-flow/spec.json
.run/keycloak-four-patterns/final/.techviz/ap1-direct-architecture/context.json
.run/keycloak-four-patterns/final/.techviz/ap1-direct-architecture/prompt.md
.run/keycloak-four-patterns/final/.techviz/ap1-direct-architecture/spec.json
.run/keycloak-four-patterns/final/.techviz/ap2-mediator-architecture/context.json
.run/keycloak-four-patterns/final/.techviz/ap2-mediator-architecture/prompt.md
.run/keycloak-four-patterns/final/.techviz/ap2-mediator-architecture/spec.json
.run/keycloak-four-patterns/final/.techviz/ap2-mediator-handoff-flow/context.json
.run/keycloak-four-patterns/final/.techviz/ap2-mediator-handoff-flow/prompt.md
.run/keycloak-four-patterns/final/.techviz/ap2-mediator-handoff-flow/spec.json
.run/keycloak-four-patterns/final/.techviz/ap3-bff-architecture/context.json
.run/keycloak-four-patterns/final/.techviz/ap3-bff-architecture/prompt.md
.run/keycloak-four-patterns/final/.techviz/ap3-bff-architecture/spec.json
.run/keycloak-four-patterns/final/.techviz/ap3-bff-session-flow/context.json
.run/keycloak-four-patterns/final/.techviz/ap3-bff-session-flow/prompt.md
.run/keycloak-four-patterns/final/.techviz/ap3-bff-session-flow/spec.json
.run/keycloak-four-patterns/final/.techviz/ap3-csrf-boundary/context.json
.run/keycloak-four-patterns/final/.techviz/ap3-csrf-boundary/prompt.md
.run/keycloak-four-patterns/final/.techviz/ap3-csrf-boundary/spec.json
.run/keycloak-four-patterns/final/.techviz/ap4-edge-forward-auth-flow/context.json
.run/keycloak-four-patterns/final/.techviz/ap4-edge-forward-auth-flow/prompt.md
.run/keycloak-four-patterns/final/.techviz/ap4-edge-forward-auth-flow/spec.json
.run/keycloak-four-patterns/final/.techviz/ap4-edge-trust-architecture/context.json
.run/keycloak-four-patterns/final/.techviz/ap4-edge-trust-architecture/prompt.md
.run/keycloak-four-patterns/final/.techviz/ap4-edge-trust-architecture/spec.json
.run/keycloak-four-patterns/final/.techviz/credential-contract-migration/context.json
.run/keycloak-four-patterns/final/.techviz/credential-contract-migration/prompt.md
.run/keycloak-four-patterns/final/.techviz/credential-contract-migration/spec.json
.run/keycloak-four-patterns/final/.techviz/credential-custody-map/context.json
.run/keycloak-four-patterns/final/.techviz/credential-custody-map/prompt.md
.run/keycloak-four-patterns/final/.techviz/credential-custody-map/spec.json
.run/keycloak-four-patterns/final/.techviz/four-pattern-request-boundaries/context.json
.run/keycloak-four-patterns/final/.techviz/four-pattern-request-boundaries/prompt.md
.run/keycloak-four-patterns/final/.techviz/four-pattern-request-boundaries/spec.json
.run/keycloak-four-patterns/final/.techviz/login-api-phase-split/context.json
.run/keycloak-four-patterns/final/.techviz/login-api-phase-split/prompt.md
.run/keycloak-four-patterns/final/.techviz/login-api-phase-split/spec.json
.run/keycloak-four-patterns/final/assets/ap1-browser-bearer-flow/ap1-browser-bearer-flow.alt.md
.run/keycloak-four-patterns/final/assets/ap1-browser-bearer-flow/ap1-browser-bearer-flow.d2
.run/keycloak-four-patterns/final/assets/ap1-browser-bearer-flow/ap1-browser-bearer-flow.dot
.run/keycloak-four-patterns/final/assets/ap1-browser-bearer-flow/ap1-browser-bearer-flow.drawio
.run/keycloak-four-patterns/final/assets/ap1-browser-bearer-flow/ap1-browser-bearer-flow.excalidraw
.run/keycloak-four-patterns/final/assets/ap1-browser-bearer-flow/ap1-browser-bearer-flow.manifest.json
.run/keycloak-four-patterns/final/assets/ap1-browser-bearer-flow/ap1-browser-bearer-flow.mmd
.run/keycloak-four-patterns/final/assets/ap1-browser-bearer-flow/ap1-browser-bearer-flow.svg
.run/keycloak-four-patterns/final/assets/ap1-direct-architecture/ap1-direct-architecture.alt.md
.run/keycloak-four-patterns/final/assets/ap1-direct-architecture/ap1-direct-architecture.d2
.run/keycloak-four-patterns/final/assets/ap1-direct-architecture/ap1-direct-architecture.dot
.run/keycloak-four-patterns/final/assets/ap1-direct-architecture/ap1-direct-architecture.drawio
.run/keycloak-four-patterns/final/assets/ap1-direct-architecture/ap1-direct-architecture.excalidraw
.run/keycloak-four-patterns/final/assets/ap1-direct-architecture/ap1-direct-architecture.manifest.json
.run/keycloak-four-patterns/final/assets/ap1-direct-architecture/ap1-direct-architecture.mmd
.run/keycloak-four-patterns/final/assets/ap1-direct-architecture/ap1-direct-architecture.svg
.run/keycloak-four-patterns/final/assets/ap2-mediator-architecture/ap2-mediator-architecture.alt.md
.run/keycloak-four-patterns/final/assets/ap2-mediator-architecture/ap2-mediator-architecture.d2
.run/keycloak-four-patterns/final/assets/ap2-mediator-architecture/ap2-mediator-architecture.dot
.run/keycloak-four-patterns/final/assets/ap2-mediator-architecture/ap2-mediator-architecture.drawio
.run/keycloak-four-patterns/final/assets/ap2-mediator-architecture/ap2-mediator-architecture.excalidraw
.run/keycloak-four-patterns/final/assets/ap2-mediator-architecture/ap2-mediator-architecture.manifest.json
.run/keycloak-four-patterns/final/assets/ap2-mediator-architecture/ap2-mediator-architecture.mmd
.run/keycloak-four-patterns/final/assets/ap2-mediator-architecture/ap2-mediator-architecture.svg
.run/keycloak-four-patterns/final/assets/ap2-mediator-handoff-flow/ap2-mediator-handoff-flow.alt.md
.run/keycloak-four-patterns/final/assets/ap2-mediator-handoff-flow/ap2-mediator-handoff-flow.d2
.run/keycloak-four-patterns/final/assets/ap2-mediator-handoff-flow/ap2-mediator-handoff-flow.dot
.run/keycloak-four-patterns/final/assets/ap2-mediator-handoff-flow/ap2-mediator-handoff-flow.drawio
.run/keycloak-four-patterns/final/assets/ap2-mediator-handoff-flow/ap2-mediator-handoff-flow.excalidraw
.run/keycloak-four-patterns/final/assets/ap2-mediator-handoff-flow/ap2-mediator-handoff-flow.manifest.json
.run/keycloak-four-patterns/final/assets/ap2-mediator-handoff-flow/ap2-mediator-handoff-flow.mmd
.run/keycloak-four-patterns/final/assets/ap2-mediator-handoff-flow/ap2-mediator-handoff-flow.svg
.run/keycloak-four-patterns/final/assets/ap3-bff-architecture/ap3-bff-architecture.alt.md
.run/keycloak-four-patterns/final/assets/ap3-bff-architecture/ap3-bff-architecture.d2
.run/keycloak-four-patterns/final/assets/ap3-bff-architecture/ap3-bff-architecture.dot
.run/keycloak-four-patterns/final/assets/ap3-bff-architecture/ap3-bff-architecture.drawio
.run/keycloak-four-patterns/final/assets/ap3-bff-architecture/ap3-bff-architecture.excalidraw
.run/keycloak-four-patterns/final/assets/ap3-bff-architecture/ap3-bff-architecture.manifest.json
.run/keycloak-four-patterns/final/assets/ap3-bff-architecture/ap3-bff-architecture.mmd
.run/keycloak-four-patterns/final/assets/ap3-bff-architecture/ap3-bff-architecture.svg
.run/keycloak-four-patterns/final/assets/ap3-bff-session-flow/ap3-bff-session-flow.alt.md
.run/keycloak-four-patterns/final/assets/ap3-bff-session-flow/ap3-bff-session-flow.d2
.run/keycloak-four-patterns/final/assets/ap3-bff-session-flow/ap3-bff-session-flow.dot
.run/keycloak-four-patterns/final/assets/ap3-bff-session-flow/ap3-bff-session-flow.drawio
.run/keycloak-four-patterns/final/assets/ap3-bff-session-flow/ap3-bff-session-flow.excalidraw
.run/keycloak-four-patterns/final/assets/ap3-bff-session-flow/ap3-bff-session-flow.manifest.json
.run/keycloak-four-patterns/final/assets/ap3-bff-session-flow/ap3-bff-session-flow.mmd
.run/keycloak-four-patterns/final/assets/ap3-bff-session-flow/ap3-bff-session-flow.svg
.run/keycloak-four-patterns/final/assets/ap3-csrf-boundary/ap3-csrf-boundary.alt.md
.run/keycloak-four-patterns/final/assets/ap3-csrf-boundary/ap3-csrf-boundary.d2
.run/keycloak-four-patterns/final/assets/ap3-csrf-boundary/ap3-csrf-boundary.dot
.run/keycloak-four-patterns/final/assets/ap3-csrf-boundary/ap3-csrf-boundary.drawio
.run/keycloak-four-patterns/final/assets/ap3-csrf-boundary/ap3-csrf-boundary.excalidraw
.run/keycloak-four-patterns/final/assets/ap3-csrf-boundary/ap3-csrf-boundary.manifest.json
.run/keycloak-four-patterns/final/assets/ap3-csrf-boundary/ap3-csrf-boundary.mmd
.run/keycloak-four-patterns/final/assets/ap3-csrf-boundary/ap3-csrf-boundary.svg
.run/keycloak-four-patterns/final/assets/ap4-edge-forward-auth-flow/ap4-edge-forward-auth-flow.alt.md
.run/keycloak-four-patterns/final/assets/ap4-edge-forward-auth-flow/ap4-edge-forward-auth-flow.d2
.run/keycloak-four-patterns/final/assets/ap4-edge-forward-auth-flow/ap4-edge-forward-auth-flow.dot
.run/keycloak-four-patterns/final/assets/ap4-edge-forward-auth-flow/ap4-edge-forward-auth-flow.drawio
.run/keycloak-four-patterns/final/assets/ap4-edge-forward-auth-flow/ap4-edge-forward-auth-flow.excalidraw
.run/keycloak-four-patterns/final/assets/ap4-edge-forward-auth-flow/ap4-edge-forward-auth-flow.manifest.json
.run/keycloak-four-patterns/final/assets/ap4-edge-forward-auth-flow/ap4-edge-forward-auth-flow.mmd
.run/keycloak-four-patterns/final/assets/ap4-edge-forward-auth-flow/ap4-edge-forward-auth-flow.svg
.run/keycloak-four-patterns/final/assets/ap4-edge-trust-architecture/ap4-edge-trust-architecture.alt.md
.run/keycloak-four-patterns/final/assets/ap4-edge-trust-architecture/ap4-edge-trust-architecture.d2
.run/keycloak-four-patterns/final/assets/ap4-edge-trust-architecture/ap4-edge-trust-architecture.dot
.run/keycloak-four-patterns/final/assets/ap4-edge-trust-architecture/ap4-edge-trust-architecture.drawio
.run/keycloak-four-patterns/final/assets/ap4-edge-trust-architecture/ap4-edge-trust-architecture.excalidraw
.run/keycloak-four-patterns/final/assets/ap4-edge-trust-architecture/ap4-edge-trust-architecture.manifest.json
.run/keycloak-four-patterns/final/assets/ap4-edge-trust-architecture/ap4-edge-trust-architecture.mmd
.run/keycloak-four-patterns/final/assets/ap4-edge-trust-architecture/ap4-edge-trust-architecture.svg
.run/keycloak-four-patterns/final/assets/credential-contract-migration/credential-contract-migration.alt.md
.run/keycloak-four-patterns/final/assets/credential-contract-migration/credential-contract-migration.d2
.run/keycloak-four-patterns/final/assets/credential-contract-migration/credential-contract-migration.dot
.run/keycloak-four-patterns/final/assets/credential-contract-migration/credential-contract-migration.drawio
.run/keycloak-four-patterns/final/assets/credential-contract-migration/credential-contract-migration.excalidraw
.run/keycloak-four-patterns/final/assets/credential-contract-migration/credential-contract-migration.manifest.json
.run/keycloak-four-patterns/final/assets/credential-contract-migration/credential-contract-migration.mmd
.run/keycloak-four-patterns/final/assets/credential-contract-migration/credential-contract-migration.svg
.run/keycloak-four-patterns/final/assets/credential-custody-map/credential-custody-map.alt.md
.run/keycloak-four-patterns/final/assets/credential-custody-map/credential-custody-map.d2
.run/keycloak-four-patterns/final/assets/credential-custody-map/credential-custody-map.dot
.run/keycloak-four-patterns/final/assets/credential-custody-map/credential-custody-map.drawio
.run/keycloak-four-patterns/final/assets/credential-custody-map/credential-custody-map.excalidraw
.run/keycloak-four-patterns/final/assets/credential-custody-map/credential-custody-map.manifest.json
.run/keycloak-four-patterns/final/assets/credential-custody-map/credential-custody-map.mmd
.run/keycloak-four-patterns/final/assets/credential-custody-map/credential-custody-map.svg
.run/keycloak-four-patterns/final/assets/four-pattern-request-boundaries/four-pattern-request-boundaries.alt.md
.run/keycloak-four-patterns/final/assets/four-pattern-request-boundaries/four-pattern-request-boundaries.d2
.run/keycloak-four-patterns/final/assets/four-pattern-request-boundaries/four-pattern-request-boundaries.dot
.run/keycloak-four-patterns/final/assets/four-pattern-request-boundaries/four-pattern-request-boundaries.drawio
.run/keycloak-four-patterns/final/assets/four-pattern-request-boundaries/four-pattern-request-boundaries.excalidraw
.run/keycloak-four-patterns/final/assets/four-pattern-request-boundaries/four-pattern-request-boundaries.manifest.json
.run/keycloak-four-patterns/final/assets/four-pattern-request-boundaries/four-pattern-request-boundaries.mmd
.run/keycloak-four-patterns/final/assets/four-pattern-request-boundaries/four-pattern-request-boundaries.svg
.run/keycloak-four-patterns/final/assets/login-api-phase-split/login-api-phase-split.alt.md
.run/keycloak-four-patterns/final/assets/login-api-phase-split/login-api-phase-split.d2
.run/keycloak-four-patterns/final/assets/login-api-phase-split/login-api-phase-split.dot
.run/keycloak-four-patterns/final/assets/login-api-phase-split/login-api-phase-split.drawio
.run/keycloak-four-patterns/final/assets/login-api-phase-split/login-api-phase-split.excalidraw
.run/keycloak-four-patterns/final/assets/login-api-phase-split/login-api-phase-split.manifest.json
.run/keycloak-four-patterns/final/assets/login-api-phase-split/login-api-phase-split.mmd
.run/keycloak-four-patterns/final/assets/login-api-phase-split/login-api-phase-split.svg
.run/n+1liner/final/document.md
.run/n+1liner/final/.techviz/baseline-schema/spec.json
.run/n+1liner/final/.techviz/eager-lazy-query-sequence/spec.json
.run/n+1liner/final/.techviz/nplus1-query-fanout/spec.json
.run/n+1liner/final/.techviz/query-port-boundary/spec.json
.run/n+1liner/final/.techviz/skew-profile/spec.json
.run/n+1liner/final/.techviz/strategy-journey/spec.json
.run/n+1liner/final/.techviz/target-schema/spec.json
.run/n+1liner/final/assets/README.md
.run/n+1liner/final/assets/diagrams/baseline-schema/baseline-schema.drawio
.run/n+1liner/final/assets/diagrams/baseline-schema/baseline-schema.svg
.run/n+1liner/final/assets/diagrams/eager-lazy-query-sequence/eager-lazy-query-sequence.drawio
.run/n+1liner/final/assets/diagrams/eager-lazy-query-sequence/eager-lazy-query-sequence.svg
.run/n+1liner/final/assets/diagrams/nplus1-query-fanout/nplus1-query-fanout.drawio
.run/n+1liner/final/assets/diagrams/nplus1-query-fanout/nplus1-query-fanout.svg
.run/n+1liner/final/assets/diagrams/query-port-boundary/query-port-boundary.drawio
.run/n+1liner/final/assets/diagrams/query-port-boundary/query-port-boundary.svg
.run/n+1liner/final/assets/diagrams/skew-profile/skew-profile.drawio
.run/n+1liner/final/assets/diagrams/skew-profile/skew-profile.svg
.run/n+1liner/final/assets/diagrams/strategy-journey/strategy-journey.drawio
.run/n+1liner/final/assets/diagrams/strategy-journey/strategy-journey.svg
.run/n+1liner/final/assets/diagrams/target-schema/target-schema.drawio
.run/n+1liner/final/assets/diagrams/target-schema/target-schema.svg
.run/n+1liner/final/evidence/explain/crown-deep-keyset-precompute.txt
.run/n+1liner/final/evidence/explain/crown-deep-keyset-single-or.txt
.run/n+1liner/final/evidence/explain/crown-unified-precompute-plan.txt
.run/n+1liner/final/evidence/explain/highlights-child-plan-A.txt
.run/n+1liner/final/evidence/explain/l14-lateral-no-index.txt
.run/n+1liner/final/evidence/explain/l14-lateral-plan.txt
.run/n+1liner/final/evidence/explain/l14-twostep-plan.txt
.run/n+1liner/final/evidence/explain/l14-window-plan.txt
.run/n+1liner/final/evidence/explain/l15-keyset-index-seek.txt
.run/n+1liner/final/evidence/explain/l15-keyset-no-index.txt
.run/n+1liner/final/evidence/explain/l15-offset-deep-page.txt
.run/n+1liner/final/evidence/explain/l15-visibility-or-probe.txt
.run/n+1liner/final/evidence/explain/l16-precompute-plan.txt
.run/n+1liner/final/evidence/explain/l16-single-or-plan.txt
.run/n+1liner/final/evidence/explain/l16-union-branches.txt
.run/n+1liner/final/evidence/explain/l16-union-decompose-plan.txt
.run/n+1liner/final/evidence/explain/l3-cartesian-join-plan.txt
.run/n+1liner/final/evidence/explain/l4-collection-join-no-limit.txt
.run/n+1liner/final/evidence/explain/l4-entity-paging-limit.txt
.run/n+1liner/final/evidence/explain/l5-batch-in-semijoin.txt
.run/n+1liner/final/evidence/explain/l5-entity-paging-limit.txt
.run/n+1liner/final/evidence/explain/l6-child-projection.txt
.run/n+1liner/final/evidence/explain/l6-parent-projection.txt
.run/n+1liner/final/evidence/explain/toone-pages-plan.txt
.run/n+1liner/final/evidence/explain/toone-users-plan.txt
.run/n+1liner/final/evidence/metrics/crown-unified-plan.csv
.run/n+1liner/final/evidence/metrics/l1-query-growth.csv
.run/n+1liner/final/evidence/metrics/l1-skew-distribution.csv
.run/n+1liner/final/evidence/metrics/l14-group-size.csv
.run/n+1liner/final/evidence/metrics/l14-index-toggle.csv
.run/n+1liner/final/evidence/metrics/l14-plan-compare.csv
.run/n+1liner/final/evidence/metrics/l14-topn-resolution.csv
.run/n+1liner/final/evidence/metrics/l15-deep-page-compare.csv
.run/n+1liner/final/evidence/metrics/l15-depth-curve.csv
.run/n+1liner/final/evidence/metrics/l16-plan-compare.csv
.run/n+1liner/final/evidence/metrics/l2-toone-split.csv
.run/n+1liner/final/evidence/metrics/l3-cartesian.csv
.run/n+1liner/final/evidence/metrics/l4-cost-curve.csv
.run/n+1liner/final/evidence/metrics/l4-inmemory-paging.csv
.run/n+1liner/final/evidence/metrics/l5-batch-resolution.csv
.run/n+1liner/final/evidence/metrics/l5-hydration-probe.csv
.run/n+1liner/final/evidence/metrics/l6-explain-width.csv
.run/n+1liner/final/evidence/metrics/l6-projection-resolution.csv
.verify/application-core-golden-lint.json
.verify/application-core-outline.json
.verify/application-core-sources.json
.verify/coverage.txt
.verify/pip-wheel.log
config/pipeline.mock.json
config/pipeline.multi-agent.example.json
docs/ARCHITECTURE.md
@@ -11,11 +272,119 @@ docs/EXTENDING.md
docs/LOGIC_MODEL.md
docs/PROVIDERS.md
docs/SECURITY.md
docs/superpowers/plans/2026-07-29-korean-experience-prose-contract.md
docs/superpowers/specs/2026-07-29-korean-experience-prose-contract-design.md
examples/briefs/application-core-spring-di-blog.json
examples/briefs/retry-policy-blog.json
examples/corpus/llm-wiki-mini/raw/branch-notes/feature-application-port-usecase-contract.md
examples/corpus/llm-wiki-mini/raw/branch-notes/feature-log-management-contract.md
examples/corpus/llm-wiki-mini/raw/official-docs/spring-component-scanning.md
examples/corpus/llm-wiki-mini/wiki/projects/ca-tmpl/clean-architecture-package-layout.md
examples/golden/application-core-spring-di-boundary.evidence-map.json
examples/golden/application-core-spring-di-boundary.md
examples/golden/application-core-spring-di-boundary.provenance.md
examples/golden/executable-clean-architecture/assets/architecture-layered-2026-07-04.svg
examples/golden/executable-clean-architecture/assets/architecture-three-lenses.svg
examples/golden/executable-clean-architecture/assets/big-picture.svg
examples/golden/executable-clean-architecture/assets/boundary-enforcement-ladder.svg
examples/golden/executable-clean-architecture/assets/context-system-boundary.svg
examples/golden/executable-clean-architecture/assets/decision-spectrum-1.svg
examples/golden/executable-clean-architecture/assets/decision-spectrum-3.svg
examples/golden/executable-clean-architecture/assets/enforcement-ladder.svg
examples/golden/executable-clean-architecture/assets/hexagonal-ports.svg
examples/golden/executable-clean-architecture/assets/idempotency-four-branches.svg
examples/golden/executable-clean-architecture/assets/lock-timeout-routing-gap.svg
examples/golden/executable-clean-architecture/assets/logical-four-rings.svg
examples/golden/executable-clean-architecture/assets/mdc-request-lifecycle.svg
examples/golden/executable-clean-architecture/assets/module-graph-measured.svg
examples/golden/executable-clean-architecture/assets/module-vs-single.svg
examples/golden/executable-clean-architecture/assets/outbox-state-machine.svg
examples/golden/executable-clean-architecture/assets/outbox-two-paths.svg
examples/golden/executable-clean-architecture/assets/production-vs-optin.drawio
examples/golden/executable-clean-architecture/assets/production-vs-optin.svg
examples/golden/executable-clean-architecture/assets/runtime-call-source-dependency.svg
examples/golden/executable-clean-architecture/assets/runtime-seq-feed.svg
examples/golden/executable-clean-architecture/assets/static-analysis-venn.svg
examples/golden/executable-clean-architecture/assets/test-contrast.svg
examples/golden/executable-clean-architecture/assets/test-taxonomy-layers.svg
examples/golden/executable-clean-architecture/assets/three-gate-flow.svg
examples/golden/executable-clean-architecture/assets/transaction-lock-independent-contracts.svg
examples/golden/executable-clean-architecture/assets/bootstrap-dependency-guards/bootstrap-dependency-guards.svg
examples/golden/executable-clean-architecture/assets/inbound-transport-boundary/inbound-transport-boundary.svg
examples/golden/executable-clean-architecture/claridoc-rewrite/document.md
examples/golden/executable-clean-architecture/claridoc-rewrite/.techviz/production-vs-optin/spec.json
examples/golden/n+1liner/n+1liner.md
examples/golden/n+1liner/.techviz/baseline-schema/spec.json
examples/golden/n+1liner/.techviz/eager-lazy-query-sequence/spec.json
examples/golden/n+1liner/.techviz/nplus1-query-fanout/spec.json
examples/golden/n+1liner/.techviz/query-port-boundary/spec.json
examples/golden/n+1liner/.techviz/skew-profile/spec.json
examples/golden/n+1liner/.techviz/strategy-journey/spec.json
examples/golden/n+1liner/.techviz/target-schema/spec.json
examples/golden/n+1liner/assets/README.md
examples/golden/n+1liner/assets/diagrams/baseline-schema/baseline-schema.drawio
examples/golden/n+1liner/assets/diagrams/baseline-schema/baseline-schema.svg
examples/golden/n+1liner/assets/diagrams/eager-lazy-query-sequence/eager-lazy-query-sequence.drawio
examples/golden/n+1liner/assets/diagrams/eager-lazy-query-sequence/eager-lazy-query-sequence.svg
examples/golden/n+1liner/assets/diagrams/nplus1-query-fanout/nplus1-query-fanout.drawio
examples/golden/n+1liner/assets/diagrams/nplus1-query-fanout/nplus1-query-fanout.svg
examples/golden/n+1liner/assets/diagrams/query-port-boundary/query-port-boundary.drawio
examples/golden/n+1liner/assets/diagrams/query-port-boundary/query-port-boundary.svg
examples/golden/n+1liner/assets/diagrams/skew-profile/skew-profile.drawio
examples/golden/n+1liner/assets/diagrams/skew-profile/skew-profile.svg
examples/golden/n+1liner/assets/diagrams/strategy-journey/strategy-journey.drawio
examples/golden/n+1liner/assets/diagrams/strategy-journey/strategy-journey.svg
examples/golden/n+1liner/assets/diagrams/target-schema/target-schema.drawio
examples/golden/n+1liner/assets/diagrams/target-schema/target-schema.svg
examples/golden/n+1liner/evidence/explain/crown-deep-keyset-precompute.txt
examples/golden/n+1liner/evidence/explain/crown-deep-keyset-single-or.txt
examples/golden/n+1liner/evidence/explain/crown-unified-precompute-plan.txt
examples/golden/n+1liner/evidence/explain/highlights-child-plan-A.txt
examples/golden/n+1liner/evidence/explain/l14-lateral-no-index.txt
examples/golden/n+1liner/evidence/explain/l14-lateral-plan.txt
examples/golden/n+1liner/evidence/explain/l14-twostep-plan.txt
examples/golden/n+1liner/evidence/explain/l14-window-plan.txt
examples/golden/n+1liner/evidence/explain/l15-keyset-index-seek.txt
examples/golden/n+1liner/evidence/explain/l15-keyset-no-index.txt
examples/golden/n+1liner/evidence/explain/l15-offset-deep-page.txt
examples/golden/n+1liner/evidence/explain/l15-visibility-or-probe.txt
examples/golden/n+1liner/evidence/explain/l16-precompute-plan.txt
examples/golden/n+1liner/evidence/explain/l16-single-or-plan.txt
examples/golden/n+1liner/evidence/explain/l16-union-branches.txt
examples/golden/n+1liner/evidence/explain/l16-union-decompose-plan.txt
examples/golden/n+1liner/evidence/explain/l3-cartesian-join-plan.txt
examples/golden/n+1liner/evidence/explain/l4-collection-join-no-limit.txt
examples/golden/n+1liner/evidence/explain/l4-entity-paging-limit.txt
examples/golden/n+1liner/evidence/explain/l5-batch-in-semijoin.txt
examples/golden/n+1liner/evidence/explain/l5-entity-paging-limit.txt
examples/golden/n+1liner/evidence/explain/l6-child-projection.txt
examples/golden/n+1liner/evidence/explain/l6-parent-projection.txt
examples/golden/n+1liner/evidence/explain/toone-pages-plan.txt
examples/golden/n+1liner/evidence/explain/toone-users-plan.txt
examples/golden/n+1liner/evidence/metrics/crown-unified-plan.csv
examples/golden/n+1liner/evidence/metrics/l1-query-growth.csv
examples/golden/n+1liner/evidence/metrics/l1-skew-distribution.csv
examples/golden/n+1liner/evidence/metrics/l14-group-size.csv
examples/golden/n+1liner/evidence/metrics/l14-index-toggle.csv
examples/golden/n+1liner/evidence/metrics/l14-plan-compare.csv
examples/golden/n+1liner/evidence/metrics/l14-topn-resolution.csv
examples/golden/n+1liner/evidence/metrics/l15-deep-page-compare.csv
examples/golden/n+1liner/evidence/metrics/l15-depth-curve.csv
examples/golden/n+1liner/evidence/metrics/l16-plan-compare.csv
examples/golden/n+1liner/evidence/metrics/l2-toone-split.csv
examples/golden/n+1liner/evidence/metrics/l3-cartesian.csv
examples/golden/n+1liner/evidence/metrics/l4-cost-curve.csv
examples/golden/n+1liner/evidence/metrics/l4-inmemory-paging.csv
examples/golden/n+1liner/evidence/metrics/l5-batch-resolution.csv
examples/golden/n+1liner/evidence/metrics/l5-hydration-probe.csv
examples/golden/n+1liner/evidence/metrics/l6-explain-width.csv
examples/golden/n+1liner/evidence/metrics/l6-projection-resolution.csv
examples/output/retry-policy-demo/manifest.json
examples/output/retry-policy-demo/provider-events.jsonl
examples/output/retry-policy-demo/run.json
examples/output/retry-policy-demo/final/document.md
examples/output/retry-policy-demo/final/evidence-map.json
examples/output/retry-policy-demo/final/provenance.md
examples/output/retry-policy-demo/final/quality-report.md
examples/output/retry-policy-demo/inputs/brief.normalized.json
examples/output/retry-policy-demo/inputs/pipeline.normalized.json
@@ -26,6 +395,16 @@ examples/output/retry-policy-demo/rounds/round-01/lint.md
examples/output/retry-policy-demo/rounds/round-01/quality-gate.json
examples/output/retry-policy-demo/rounds/round-01/review-01-logic.json
examples/output/retry-policy-demo/rounds/round-01/review-01-logic.raw.txt
examples/output/retry-policy-demo/rounds/round-01/review-02-decision.json
examples/output/retry-policy-demo/rounds/round-01/review-02-decision.raw.txt
examples/output/retry-policy-demo/rounds/round-01/review-03-reader.json
examples/output/retry-policy-demo/rounds/round-01/review-03-reader.raw.txt
examples/output/retry-policy-demo/rounds/round-01/review-04-editor.json
examples/output/retry-policy-demo/rounds/round-01/review-04-editor.raw.txt
examples/output/retry-policy-demo/rounds/round-01/review-05-evidence.json
examples/output/retry-policy-demo/rounds/round-01/review-05-evidence.raw.txt
examples/output/retry-policy-demo/rounds/round-01/review-06-operations.json
examples/output/retry-policy-demo/rounds/round-01/review-06-operations.raw.txt
examples/output/retry-policy-demo/stages/01-planner.raw.txt
examples/output/retry-policy-demo/stages/02-outline.json
examples/output/retry-policy-demo/stages/02-outline.md
@@ -40,6 +419,7 @@ schemas/review.schema.json
schemas/source-pack.schema.json
scripts/run-demo.ps1
scripts/run-demo.sh
scripts/run-local-corpus-example.sh
scripts/test.sh
scripts/verify.sh
src/claridoc/__init__.py
@@ -58,10 +438,12 @@ src/claridoc/utils.py
src/claridoc/__pycache__/__init__.cpython-312.pyc
src/claridoc/__pycache__/__main__.cpython-312.pyc
src/claridoc/__pycache__/cli.cpython-312.pyc
src/claridoc/__pycache__/corpus.cpython-312.pyc
src/claridoc/__pycache__/lint.cpython-312.pyc
src/claridoc/__pycache__/models.cpython-312.pyc
src/claridoc/__pycache__/pipeline.cpython-312.pyc
src/claridoc/__pycache__/prompts.cpython-312.pyc
src/claridoc/__pycache__/provenance.cpython-312.pyc
src/claridoc/__pycache__/report.cpython-312.pyc
src/claridoc/__pycache__/structures.cpython-312.pyc
src/claridoc/__pycache__/templates.cpython-312.pyc
@@ -97,4 +479,15 @@ tests/test_prompts.py
tests/test_providers.py
tests/test_schemas.py
tests/test_structures.py
tests/__pycache__/__init__.cpython-312.pyc
tests/__pycache__/helpers.cpython-312.pyc
tests/__pycache__/test_cli.cpython-312.pyc
tests/__pycache__/test_corpus.cpython-312.pyc
tests/__pycache__/test_lint.cpython-312.pyc
tests/__pycache__/test_models.cpython-312.pyc
tests/__pycache__/test_pipeline.cpython-312.pyc
tests/__pycache__/test_prompts.cpython-312.pyc
tests/__pycache__/test_providers.cpython-312.pyc
tests/__pycache__/test_schemas.cpython-312.pyc
tests/__pycache__/test_structures.cpython-312.pyc
verification/TEST_REPORT.md