Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# IssueDigest

다음 설계: [역할 적용·무손실 검수 입력](docs/changes/role-application-table-audit.md). 원문과 추출 결과를 유지한 표 형식의 무호출 시제품에서 장문 검수 입력 수용을 확인했다. 새 SDK·실제 읽기/의미 개선은 후속이다.

현재 실제 평가: [역할 경계·출력 배분 v2](docs/research/semantic-balanced-acceptance.md). 실제9요청 모두 반환했으나 생성 의미는 비분쟁1/4·분쟁1건 유보이며 검수 미탐·장문 입력 차단이 남았다. 원래 결과/비용을 보존하고 앱 적용을 보류한다.

현재 구현: [역할 경계·출력 배분 v2 SDK](docs/changes/semantic-balanced-output-implementation.md). 별도 생성·검수와 실제 사용량에 따른 합산 한도를 구현했다. 독립 검토·전체7,808개 검사/빌드/계약 검증을 통과했다. 실제 의미 품질·앱 반영은 별도 인수한다.
Expand Down
2 changes: 2 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# 문서 안내·협업 방법

최신 설계: [역할 적용·무손실 table 검수 입력](changes/role-application-table-audit.md). 원문/원래 결과를 보존한 mock 전송/왕복 복원을 확인하고 별도 codec·SDK 구현을 준비한다. 실제 v2 평가의 비분쟁1/4·검수 미탐·입력 차단을 보존하며 table 표현의 실제 의미 개선은 미검증이다.

다음 계약: [역할 경계·출력 배분 v2](changes/semantic-boundary-balanced-output.md). 정보 누락과 역할 분류를 분리하고 확실한 중요한 한정어 손실은 누락으로 남긴다. 총출력2,500을 유지하며 생성최대1,800/검수실제잔여 배분을 설계·mock 확인했다. 두 압축안은 커져 보류했으며 새SDK/실제완료·의미 개선은 미검증이다.

최신 실제 평가: [전체 역할 생성·검수](research/role-aware-acceptance.md). 실제6요청/반환5·출력 미완료 거부1, 후속 무호출1이다. 증감 자료 생성은 필수6수치/방향 충족, 오류 검수2건은 필수5진단을 찾았으나 정상 기준 충돌2개와 긴 원문 출력 부족이 남아 앱 반영을 보류한다.
Expand Down
82 changes: 82 additions & 0 deletions docs/changes/role-application-table-audit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# 역할 적용 관계·무손실 검수 입력 설계

2026-10-22 한국 시간. [v2 실제9회 평가](../research/semantic-balanced-acceptance.md) 다음 설계/비공개 무호출 시제품이다. 새 SDK·실제 의미 개선·앱 적용을 완료한 상태가 아니다. 실행 코드446개·과거 실제 증거480개(361+119)·기존 gold/점수/실패 비용을 보존하며 추가 provider 요청0이다. 앱/API/UI/DB/worker·기본 모델·서버/main은 변경하지 않는다.

## 문제를 나누는 이유

H는 원래 사업 수에 있는 하위 지역이 국비에는 빠졌지만 검수가 무경고였다. I는 운영 주체를 집계 인원의 기관 소속으로 넣었고 검수가 두 대상을 탐지했다. 이는 단어의 존재만으로 적용 관계를 결정할 수 없고, 검수의 무경고도 정확도 인증이 아니라는 사례다. 사업 연도는 새 proposal의 다른 역할에 이미 있어 period에도 중복을 강제하는 누락으로 세지 않았다. 과거 입력/기준은 바꾸지 않는다. G의 역할 분류/목표 기간 경계는 여전히 독립 사람 재판정 과제다.

J의 생성은 입력3,486/output1,610으로 끝났으나, 전체 원문과 실제 proposal8context/6event/8binding/1relation의 후속 검수는 envelope15,466 > 실제 잔여14,904라562초과했다. 원문/역할 삭제나 한도 인상으로 넘기지 않았다. 이 실패는 출력 완료와 후속 입력 수용이 다른 조건임을 보여준다.

## 표현 비교와 선택

다섯 실제 v2 generation을 읽기 전용 참조로 사용했다. 반복 anchor를 별도 사전으로 만드는 안, 이름 있는 열을 한 번 적고 각 객체를 행으로 쓰는 안, 두 안의 결합을 비교했다. 모든 원래 값·순서·null·빈 배열을 정확히 왕복 복원했다. context/사건/수치를 합치거나 의미 오류를 고치지 않았다.

| 참조 proposal | 현재 JSON | anchor 사전 | 이름 있는 열/행 | 열/행+anchor 사전 |
| --- | ---: | ---: | ---: | ---: |
| G | 1,648 | 1,803 | 1,437 | 1,592 |
| H | 1,218 | 1,405 | 1,152 | 1,339 |
| I | 1,104 | 1,357 | 1,038 | 1,291 |
| J | 3,897 | 4,562 | 2,766 | 3,429 |
| K | 2,359 | 2,510 | 1,898 | 2,049 |

UTF8 minified JSON byte이며 token/비용 측정이 아니다. anchor 사전은 overhead가 더 커 이번에는 채택하지 않는다. **이름 있는 열/행을 검수 입력에만 적용하는 안을 다음 구현으로 선택한다.** 생성 DTO·출력·원래 frame은 바꾸지 않는다. 앞서 rejected present/absent 생성 출력안과도 다른 입력 표현이다.

proposal만 바꾸면 J의 기존 지침/schema 기준 envelope는14,335·여유569다. 이를 실제 새 요청으로 간주하지 않고, 후보 catalog·문장·scope slot까지 같은 원칙으로 묶은 전체 입력과 읽는 방법 지침을 별도로 시험했다.

### 전체 입력의 무호출 확인

| 자료 | 기존 검수 envelope | 새 table 초안 envelope | 원래 생성의 실제 잔여total | 검수 output cap | 여유 |
| --- | ---: | ---: | ---: | ---: | ---: |
| G | 11,129 | 11,117 | 16,460 | 1,100 | 5,343 |
| H | 10,371 | 10,613 | 16,789 | 1,100 | 6,176 |
| I | 10,267 | 10,509 | 16,843 | 1,100 | 6,334 |
| J | 15,466 | 13,809 | 14,904 | 890 | 1,095 |
| K | 12,211 | 11,714 | 16,140 | 1,100 | 4,426 |

새 tool명 `audit_role_table_v1`·identity `issuedigest_role_table_audit_v1`·profile `role-table-audit-v1`·input_format `named-columns-v1`의 초안이다. 기존 실제 dynamic DTO의 raw/normalized schema를 재사용한 ToolOutput을 새 tool명으로 mock HTTP5회 전송했다. 추가 decoder 지침412byte를 포함한 지침은3,134byte다. no-store·low·명시 default tier·30초·각 실제 잔여/출력cap을 유지했다. 표의 envelope는 전체 UTF8 prompt+지침+max(raw/normalized schema)+framing2,048+출력reserve다.

다섯 자료의 전체 원문·문장 순서/빈 문장/공백·후보 atoms/단위/qualifiers/범위·원래 proposal·다섯 역할/current slot 순서를 복원했다. 짧은 H/I는 지침·header overhead로242byte 커졌으며 모든 자료에 대한 용량 절감을 주장하지 않는다. 잘못된 표식/header/행 길이/필수 cell/추가 필드의55개 시제품 사례를 거부했다. 이는 새 strict SDK의 전체 타입/변조 검증이나 실제 AI 의미 시험을 대신하지 않는다. Function/HTTP usage100/30은 합성 mock 값이며 원래 실제 생성의 usage를 바꾸지 않았다. 실제 새 audit 요청·token/의미/비용 개선 관측은0이다.

## 다음 table 입력 계약

각 표는 정확한 `columns`와 `rows`를 가진다. 이름 없는 tuple을 추측해 읽지 않고 열 이름/정확한 순서를 한 번 명시한다. 필수 cell은 null이어도 생략하지 않는다. header순서·행 길이·필드 집합·실제 타입이 다르면 복구/기본값 삽입 없이 거부한다.

- proposal의 contexts/events/bindings/relations는 현재 alias 이름의 고정 열과 행이다. `from`만 유효하며 `from_`를 다른 이름으로 받지 않는다. nested anchor/scopes/change는 기존 이름 있는 객체를 그대로 둔다.
- candidates는 id/quote_id/expression/atoms/separator/qualifiers/lexical_kind/sentence_ids 전부를 유지한다. 인물/기간/수량을 새로 분류하거나 원문 숫자/단위를 계산하지 않는다.
- 각 quote의 sentences는 id/text 열이다. text를 행 순서대로 separator 없이 이어 원문과 정확히 같아야 한다. 빈 행·빈 text·공백을 제거하거나 문장을 합치지 않는다.
- scope_slots는 number/slots 열이며 context.scopes→binding.scopes의r1..r4 순서를 유지한다. roles/change_coverage도 보존한다.
- codec는 현재 source·검증된 exact RoleAliasGenerationV2로부터 결정적으로 만들고 역변환 후 의미 데이터가 원래 canonical packet과 완전히 같은지 확인한다. 시제품이 비교용 packet identity를 되돌리는 것은 receipt 변환이 아니다. 실제 SDK는 새 audit의 자기 profile/hash/영수증을 만들며 v2 audit 영수증으로 위장하거나 검증을 통과시키지 않는다.

새 감사 결과의 pure report/진단 DTO와 target/span 검증은 기존 의미 계약을 읽기 전용 재사용할 수 있다. 원래 generation·proposal/source/coverage hash·최대144 명시 대상·필수 역할/slot·미완료/uncertain 우선순위·unknown/known 실패 usage는 그대로 재검증한다. 새 wrapper profile `role-table-audit-v1`과 input_format/지침 hash를 명시적으로 고정하고, 저장 값은 현재 packet/schema/원래 report로 재구성한다. 새 모델이 표를 잘 읽는다는 가정만으로 성공을 표시하지 않는다.

현재 코드446개는 동결한다. 다음 구현은 별도 codec 모듈/합성 테스트와 별도 borrowed-model table auditor/합성 테스트이며 기존 v1/v2 요청·영수증·wire를 바꾸지 않는다. 각 Model은 caller가 소유하고 단일1회/30초/no-store·retry/repair/fallback0이다. 생성output1,800·검수min(1,100,2,500−실제 생성output)·합산total20,000/output2,500을 유지한다. 빈 선택 검수0회/합산1·정상 합산2·실패 raw usage와 시작 불명확성을 보존한다. 앱 전체24,000/output2,500·권한/내구 인수는 별도이며 새 경로에 추가 예산을 주지 않는다.

## 역할 후보·적용 관계는 별도 검증

원문에 있는 열거·연도/상대 시점·기관/지역처럼 생긴 접미사·인용구를 exact source span으로 모으는 범용 시제품을 시험했다. 개별 열거 구성원도 별도로 보존하고 동일 실제 위치의 중복 origin만 함께 기록했다. 서로 다른 위치/역할을 합치지 않았다. 탐지되지 않은 표현도 원문 전체에는 남는다.

| 자료 | 표면 힌트 | 선택 수치×동일 quote 힌트 | 힌트 입력 추가 byte(새 지침/schema 제외) |
| --- | ---: | ---: | ---: |
| G | 5 | 15 | 495 |
| H | 8 | 16 | 680 |
| I | 3 | 6 | 379 |
| J | 24 | 192 | 1,844 |
| K | 7 | 42 | 596 |

이는 실제 지명/기관/기간 catalog가 아니다. 실제로 ‘양성도’·‘전년도’를 지역 접미사처럼 잡는 오탐이 있었다. 원래 오류를 피하려면 origin을 semantic type/사실로 승격하거나 단어가 보인다는 이유로 모든 수치에 연결해서는 안 된다. 이 다섯 자료의 locate 실패는0이었으나 일반 completeness/recall 증거가 아니며, locate 불가·한도 초과를 조용히 누락해 완료로 만들지 않는다.

향후 적용 관계 계약은 각 선택 수치와 같은 quote의 정해진 후보 쌍에 대해 ‘측정 범위/기간·기관 운영 주체/발표·entity 한정어/사업 정체성·비교 기준/목적·관련 없음/불확실’을 명시 판단하는 방향이다. 운영과 정당한 소속은 함께 가능하고 목적 수혜자가 집계의 배타적 모집단인 것은 아니다. 한 단어에 여러 역할이 명시될 수 있으므로 무조건 단일 역할로 강제하지 않는다. 후보 누락/모호성·검토되지 않은 쌍을 무경고/관련 없음으로 자동 채우지 않는다. G의 분쟁 gold를 이에 맞춰 수정하지 않는다.

하지만 전체 힌트와 pair grid를 지금 붙이는 안은 채택하지 않는다. J는 힌트 입력만1,844byte라 table 여유1,095보다749크며 새 지침/출력 schema/output 부담도 더 든다. 단순 추가·조용한 후보 절단·추가 호출/예산 확대를 하지 않는다. 기존 packet/표현과 안전하게 source 참조를 공유하는 후보 계약, 명시 coverage/overflow/uncertain, 실제 source-linking/오탐·미탐/비용을 별도 설계·인수해야 한다. table 변경만으로 H의 의미 미탐이나 I의 생성 오류가 해결됐다고 주장하지 않는다.

## 구현·인수 순서

1. table codec의 현재 필수 타입/표식·raw/actual/nested/tuple·열/행·빈 선택·원문 roundtrip·변조 거부를 TDD로 구현한다.
2. 별도 table audit SDK·자기 영수증/지침/schema·actual remaining budget·late validation 실패/unknown usage·대상별 진단·무송신/mock을 검증한다. 독립 검토·새 전체QA와 기존446/480 증거 보존을 확인한다.
3. 새 사전 기준/상한으로 동일 실제 v2 generation의 새 table audit를 제한 평가한다. 실제 읽기 정확도·장문 완료·미탐/오탐·비용을 따로 확인한다. 이미 소진한9회 runner나 한도/응답을 변경해 재호출하지 않는다.
4. 역할 후보/적용 관계는 전체 원문·proposal·합산 예산을 지키는 별도 계약의 용량/coverage부터 확인한다. 이전 의미 실패·G사람 재판정과 앱 인수는 계속 남긴다.

이번은 spec-driven-workflow 문서 예외의 연구/설계·비공개 시제품 작업이다. 새 production SDK·새QA/SDD/서버 자원을 만들지 않았고 전체7,808개 코드QA 증거는 코드가 같아 재사용한다. source·원래 모든 응답/gold/비용·이번 비교 결과를 보존하며 PR/Sites 최종 기록은 진행 기록을 따른다.

새 문맥의 설계/비공개 시제품 검토 최종 C0/I0/M0를 확인했다. 원문/canonical proposal 복원·입력 예산·힌트 위치/용량을 검토했으며 이는 새 SDK/실제 의미 품질 인수를 대신하지 않는다.
4 changes: 4 additions & 0 deletions docs/planning/implementation-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

2026-10-20 KST 기준. IssueDigest는 질문에서 시작해 이슈의 맥락·쟁점·변화를 이해하는 B2C 브리핑 서비스다. [D016·D017·D019·D020·D021·D022](decisions.md)과 [제품 경험 인터뷰](../research/product-experience-interview.md)가 제품 방향의 원본이다. 이 문서는 현재 구현과 다음 구현을 구분한다. 두 사람의 공동 자료 검증을 최종 제품 구조로 확대하지 않는다.

## M3 최신 인계 · 2026-10-22 한국 시간

[v2 실제 평가](../research/semantic-balanced-acceptance.md)는9요청/반환9·비분쟁 의미1/4/G사람판정유보·검수 미탐/장문 입력 차단으로 앱 반영을 보류했다. 다음은 [무손실 table 검수 입력](../changes/role-application-table-audit.md)의 별도 codec/SDK·실제 인수다. 역할 후보 전체 catalog/grid는 현재 용량·오탐 한계로 즉시 추가하지 않으며 별도 적용관계 계약이 필요하다. 기존 기반 구현/제품 여정과 이 SDK 연구 상태를 구분한다.

## 제품 여정

1. 궁금한 질문을 입력하거나 실제 게시된 공개 브리핑을 읽는다. AI 질문은 홈 초안으로 이어가 로그인 후 편집·명시 제출한다. 최근 주목 이슈는 별도 관측 데이터가 필요한 후속이다.
Expand Down
16 changes: 16 additions & 0 deletions docs/planning/progress.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,19 @@
## 최종 영수증 · table 검수 입력 설계 · 2026-10-22 한국 시간

[Draft PR84](https://github.com/DigestWorks/IssueDigest/pull/84)은 PR83 기반·미병합/앱 첨부다. [계획판 v106](https://lawdigest-rebuild-plan.ijaesinii.chatgpt.site/) public/native succeeded, source `64c86465d810d6b3d71c9156a42ed2a40f23cbed`, saved `appgprj_6ac612dd42708191a7a0c8377be64d48~appgver_93b9c91204548191bddd36fe58a94038`, deployment `appgdep_6ad97c722f6c81919a05139f06fb9c72`, 2026-10-22 12:01:21 KST이다. 저장소 사본660d77c80d1ea383679da702f264b6f504aa7066·이전v105/전체 기록을 보존했다. 변경Markdown6개 중 문서5개만 해당 canonical/flat 사본에 반영하고 루트README는 snapshot 요약으로 표시했다. HTML91개·로컬링크/asset/anchor2,010개·공개텍스트268개·실제 비공개ID/질문/긴인용60종 부재 검사를 통과했다. 기존 레이아웃 텍스트 갱신으로 새 브라우저 검사는 실행하지 않았고 사용자 탭을 열거나 이동하지 않았다.

설계/무호출 시제품 검토 C0/I0/M0, 원문/원래 결과5개 복원·mock HTTP5회·시제품 변조55개 거부다. 추가 provider0·기존446실행파일/480실제 증거/45설계 증거 불변·전체7,808개 코드QA 증거 재사용이다. 이번은 spec-driven-workflow 문서 예외이며 새 production SDK·새QA/SDD/서버자원·앱/API/UI/DB/worker·기본 모델/IssueDigest main 변경0이다. table codec/별도 검수 SDK·실제 읽기/의미·역할 적용 관계/앱 인수는 후속이다. 이 영수증은 저장소 원본으로 사본 재게시를 반복하지 않는다.

## 게시·인계 · table 검수 입력 설계 · 2026-10-22 한국 시간

[Draft PR84](https://github.com/DigestWorks/IssueDigest/pull/84)은 PR83 기반·미병합/앱 첨부다. 선택한 무손실 table 입력과 보류한 anchor 사전/전체 힌트-grid를 기록했고 새 문맥 설계 검토 C0/I0/M0를 마쳤다. 실제 원문/proposal5개 roundtrip·mock5회·시제품 변조 거부55개, J envelope13,809/잔여14,904를 확인했다. 기존446실행 파일/480실제 증거·45설계 증거는 보존했고 새SDK/실제 의미·앱 적용은 후속이다. 추가 provider0·새QA/SDD/서버자원0이며 Sites 최종 게시 영수증은 후속 기록에서 확정한다.

## 역할 적용·table 검수 입력 · 설계·검토 · 2026-10-22 한국 시간

[비교·선택·후속 계약](../changes/role-application-table-audit.md). 원문/원래 proposal을 그대로 복원하는 named-column 입력 시제품은 실제 J envelope15,466→13,809·실제 잔여14,904/cap890 안에 들어갔다. 추가 decoder412byte 포함 mock HTTP5개·잘못된 표식/열/행/필수값55개 거부를 확인했다. anchor 사전은 더 커져 보류했다. 짧은 H/I는242byte 커졌으며 token/의미 개선은 미검증이다.

범용 표면 힌트는 J24개/192쌍·입력1,844byte라 새 여유1,095도 넘고 의미 오탐이 있어 전체 catalog/grid 즉시 추가를 보류한다. table 입력만으로 누락/오인 해결을 주장하지 않는다. 선택한 table codec/별도 SDK는 미구현이다. 새 문맥의 설계/시제품 검토 C0/I0/M0를 마쳤으며 실제 의미 개선·SDK 검증은 후속이다. 추가 provider0·기존446실행파일/480실제 증거 보존·새QA/SDD/앱/서버/main 변경0이다.

## 최종 영수증 · v2 실제 제한 평가 · 2026-10-22 한국 시간

[Draft PR83](https://github.com/DigestWorks/IssueDigest/pull/83)은 PR82 기반·미병합/앱 첨부다. PR82의 GitHub verify 성공도 확인했다. [계획판 v105](https://lawdigest-rebuild-plan.ijaesinii.chatgpt.site/) public/native succeeded, source `67a23904046223ba82dbe164ee8e9d779a574c2c`, saved `appgprj_6ac612dd42708191a7a0c8377be64d48~appgver_ef800b6a7f54819182a69b29134901b6`, deployment `appgdep_6ad974ea6f6c81919c1abe50242e5437`, 2026-10-22 11:29:12 KST이다. 저장소 사본7594a1ede9e04058d64d824290f7cb55910afbbc·이전v104/전체 기록을 보존했다. 변경Markdown4개 중 문서3개만 canonical/flat 사본에 반영하고 루트README는 snapshot 요약으로 표시했다. HTML90개·로컬링크/asset/anchor1,970개·공개텍스트265개·비공개ID/질문/긴인용60종 부재 검사를 통과했다. 기존 레이아웃 텍스트 갱신으로 새 브라우저 검사는 실행하지 않았고 사용자 탭을 열거나 이동하지 않았다.
Expand Down
Loading
Loading