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

다음 설계: [수치별 역할 적용 관계·명시 coverage](docs/changes/role-link-coverage.md). 후보×수치의 모든 관계에 복수 역할·관련 없음·불확실·미검토를 기록하는 행렬을 설계했다. 원문/proposal과 실제 잔여 예산을 유지한 무호출 시제품이며 새SDK/실제 관계 정확도는 미검증이다.

최신 실제 평가: [table 검수5회](docs/research/role-table-acceptance.md). 긴 자료도 전체 원문/추출을 유지해 검수를 완료했지만, 사전 역할 오류8대상 중 탐지2/미탐6이며 추가진단3개는 판정 유보다. 참고$0.0355525·원래 결과/비용을 보존하고 앱 연결을 보류한다.

현재 구현: [무손실 table 검수 SDK](docs/changes/role-table-audit-implementation.md). 원문·추출 결과를 그대로 복원하는 입력과 별도 검수 영수증/실제 잔여 예산을 구현했다. 독립 검토·전체8,099개 검사/빌드/계약 검증과 오프라인 mock을 통과했다. 실제 AI 읽기/의미 품질과 앱 적용은 후속이다.
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 @@
# 문서 안내·협업 방법

다음 설계: [수치별 역할 적용 관계·명시 coverage](changes/role-link-coverage.md). 후보×수치의 모든 관계에 복수 역할·관련 없음·불확실·미검토를 기록하는 행렬을 설계했다. 원문/proposal과 실제 잔여 예산을 유지한 무호출 시제품이며 새SDK/실제 관계 정확도는 미검증이다.

최신 실제 평가: [table 검수5회](research/role-table-acceptance.md). 긴 자료도 전체 원문/추출을 유지해 검수를 완료했지만, 사전 역할 오류8대상 중 탐지2/미탐6이며 추가진단3개는 판정 유보다. 참고$0.0355525·원래 결과/비용을 보존하고 앱 연결을 보류한다.

현재 구현: [무손실 table 검수 SDK](changes/role-table-audit-implementation.md). 원문·추출 결과를 그대로 복원하는 입력과 별도 검수 영수증/실제 잔여 예산을 구현했다. 독립 검토·전체8,099개 검사/빌드/계약 검증과 오프라인 mock을 통과했다. 실제 AI 읽기/의미 품질과 앱 적용은 후속이다.
Expand Down
94 changes: 94 additions & 0 deletions docs/changes/role-link-coverage.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# 수치별 역할 적용 관계·명시 검토 범위

2026-10-22 한국 시간. [table 검수 실제5회](../research/role-table-acceptance.md) 다음의 설계·비공개 무호출 시제품이다. 기존450실행 파일·562실제 평가 증거(480+82)·45이전 설계 증거와 원래 gold/점수/실패 비용을 보존한다. 앱/API/UI/DB/worker·기본 모델·서버/main은 바꾸지 않는다. 새 production SDK나 실제 의미 개선을 완료한 상태가 아니다.

## 목표와 경계

사용자는 브리핑의 수치가 누구·어느 지역·어느 기간에 적용되는지 신뢰할 수 있어야 한다. 지금은 원문 전체를 읽는 검수도 H의 국비 지역 누락과 J의 선정 지역 연결을 놓쳤다. 새 설계는 **정해진 원문 표현과 수치 사이의 적용 관계를 각각 명시적으로 기록**한다. 검토하지 않은 관계를 ‘관련 없음’으로 채우지 않고 불확실과 미검토를 구분한다.

다만 후보를 찾는 것, 관계를 분류하는 것, 원래 추출에서 중요한 정보가 빠졌는지 판단하는 것은 다른 일이다. 이 설계는 먼저 후보 관계의 명시 coverage를 만든다. 관계가 있다고 분류됐다는 이유만으로 원래 생성의 누락/오류를 자동 확정하거나 수리하지 않는다. 기존 다섯 역할 검수와 기능이 같다고 표시하지 않으며 앱 연결은 여전히 후속이다. 후보 목록 밖의 표현까지 검토했다는 주장도 하지 않는다.

## 세 가지 접근

| 접근 | 이점 | 한계·판단 |
| --- | --- | --- |
| 기존 검수 지침만 강화 | 계약이 작음 | H미탐이 실제 두 평가에 남았고 어떤 관계를 읽었는지 드러나지 않음. 이번 선택에서 제외 |
| 모든 후보×수치를 이름 있는 개별 객체로 출력 | 읽고 검증하기 쉬움 | J192쌍의 모두 불확실인 carrier만13,018 UTF8byte. 출력cap890에서 전체 완료를 보장하지 못함. 그대로 추가하지 않음 |
| 후보 행×수치 열의 명시 행렬 | 모든 대상에 상태를 남기면서 반복 필드/ID를 줄임 | 행/열/역할 부호를 AI가 정확히 읽는지 별도 인수 필요. **다음 순수 계약 구현 후보로 선택** |

이 선택은 신뢰도가 높아졌다는 결론이 아니라 검증 가능한 좁은 계약이다. 원문을 줄이거나 추가 호출·한도 인상으로 용량을 확보하지 않는다.

## 원문 후보와 적용 대상

서버가 전체 현재 원문에서 결정적으로 만든 표면 후보를 보존한다. 기존 연구의 열거/각 구성원·연도/상대 시점·기관/지역 접미사처럼 보이는 표현·인용구를 참조하지만 실제 지명/기관 사전이나 완전한 NER로 간주하지 않는다. ‘전년도’ 등을 지역처럼 찾는 오탐이 있었으므로 매칭 규칙은 semantic type이 아니다.

후보 원본은 id/quote_id/문장id/exact text/중복 구분 문맥·정확한 위치·모든 탐지 origin을 가진다. 같은 실제 위치의 origin만 합치고 다른 위치/역할은 합치지 않는다. 공급자에는 **id/quote_id/s/t/c**의 명시 열과 원래 표현만 보여 준다. 탐지 origin은 서버의 불변 catalog에 남기며 모델에게 지역/기관 유형으로 제시하지 않는다. 이 metadata 투영은 원문·원래 수치/추출 삭제가 아니다. 저장 결과는 전체 catalog와 공급자 투영을 함께 재구성한다.

전체 현재 source/proposal은 기존 table packet 그대로 별도 source_packet에 포함한다. 모든 문장·빈 문장·공백·수치 atoms/단위/범위·원래 역할/관계/상태를 유지한다. 수치의 신청 집단과 선정 집단을 합치거나 목적 수혜자를 배타적 집계 모집단으로 만들지 않는다.

각 quote의 domain은 원래 binding 순서의 선택 수치 목록과 원문 순서의 후보 목록이다. 같은 quote의 모든 후보×선택 수치를 대상으로 한다. 다른 quote는 의미를 추정해 연결하지 않는다. 수치가 없는 quote도 원문/catalog와 빈 domain을 명시하며 해당 후보 행의 열은0개다. 번호/행/열 순서는 현재 입력으로 재구성하며 원문이나 generation이 바뀌면 과거 결과와 섞지 않는다.

후보당 원래 exact anchor를 기존 strict locator로 확인한다. 찾을 수 없는 표현이나 quote당24개 초과·전체 요청 용량 초과는 명시 사전 차단/overflow다. 상위24개 선택·조용한 절단·찾기 실패 생략을 하지 않는다. 현재 24라는 제한은 운영 품질/완전성 보장이 아니라 설계상 상한이며 새 자료에서 별도 검증한다. 미탐지 표현은 원문에 남아 있어도 candidate coverage 밖이라는 한계를 기록한다.

## 역할·상태와 행렬

행은 hint_table의 정확한 후보 순서, 열은 그 후보 quote domain의 정확한 수치 순서다. role_legend 객체의 키 순서는 사용하지 않으며, 별도의 필수 role_order 문자열을 지침·검증기가 함께 사용한다. 규칙/순서 변경도 새 버전/hash로 재구성한다. 출력 rows의 각 문자열은 세미콜론으로 열을 구분한다. 한 cell에 여러 역할을 동시에 표시할 수 있으며 명시적인 role_order=`STOREIBP` 순서·중복 없음·추가 문자/공백 없음이 필수다.

| 부호 | 관계 |
| --- | --- |
| S | 측정 범위: 집단·지리·명시 소속 |
| T | 측정/적용 기간 |
| O / R | 운영 주체 / 발표 주체 |
| E / I | 측정 대상의 한정어 / 사업 정체성 |
| B / P | 비교 기준 / 목적 |
| - | 해당 후보와 수치를 검토한 뒤 명시적으로 관련 없음 |
| ? | 적용 관계가 불확실함 |
| _ | 미검토: 예산/복잡도 등으로 검토를 마치지 못함 |

예를 들어 두 열의 `SO;?`는 첫 수치에 측정 범위와 운영 역할이 모두 있고, 둘째 수치는 연결이 불확실하다는 **표현 예시**다. 실제 같은 명칭이 두 역할을 가진다는 사실 판단 예시가 아니다. 운영/정당한 소속은 함께 가능하며 무조건 한 역할만 고르게 하지 않는다. 기간/비교 기준·운영/발표·사업/집계 한정어도 구분한다.

출력은 rows와 필수 incomplete만 갖는다. 빠진 행/열을 기본값으로 복구하지 않는다. `_`가 있으면 반드시 incomplete=true다. `?`는 판단 시도는 했으나 관계를 확정하지 못한 상태이고, 미검토를 대신하는 값이 아니다. 전체 행이 있어도 후보 밖 source coverage를 완전하다고 만들지 않는다. AI가 모두 `-`로 답했다고 원문 전체의 ‘문제 없음’을 인증하지 않는다.

서버는 행렬을 명시 `{hint,number,state,roles}` 관계로 역변환한다. 공개 제품에 부호 행렬이나 개발 검수 상태를 노출하지 않는다. 검토 대상 쌍이 있으면 반환 상태는 candidate_review_incomplete / candidate_review_uncertain / reviewed_candidates이며 기존 no_issues_flagged로 바꾸지 않는다. 선택 수치0은 not_applicable, 선택 수치는 있으나 후보/쌍0은 candidate_inventory_empty로 구분하고 둘 다 모델 호출0이다. 어느 쪽도 원문 완전 검토가 아니다. quote별 빈 domain은 다른 유효 쌍의 검토를 없애지 않는다.

## 다음 순수 계약의 검증 책임

새 report/generation profile과 matrix encoding version을 별도로 둔다. 원래 exact RoleAliasGenerationV2·전체 source/catalog/domain과 각 hash·원래 행렬/불확실/미검토를 보존한다. role-table audit 영수증으로 위장하거나 예전 report/점수를 바꾸지 않는다. 저장 값은 현재 원문/원래 generation/규칙 버전/동적 schema/지침·prompt·usage로 재구성한다.

각 관계의 수치 expression·후보 anchor와 두 위치 사이의 원문 범위를 서버가 현재 원문에서 exact 재구성한다. 이 위치 확인은 관계의 진실/중요도 증명이 아니다. 새 관계 report는 기존 audit의 최대20 support문장/다섯 진단 역할/144대상 report로 자동 변환하지 않는다. 중요한 정보가 다른 역할이나 관계에 이미 남았는지, 의미적으로 같은 표현인지, 손실이 실제 중요한지는 후속 비교 계약과 실제 인수 과제다. 문자열/부분문자열 불일치로 hard missing을 자동 만들지 않는다.

필수 marker/raw/actual/nested/container/tuple/scalar·현재 source/catalog/domain 재검증, malformed rows/순서/중복 부호/다른quote/원문 변경 거부는 별도 strict SDK가 구현해야 한다. 비공개 시제품의90개 malformed 출력 거부는 이 전체 경계를 대신하지 않는다. 빈 선택·0후보·다중quote·반복/겹치는 표현·locate 실패·overflow도 다음 TDD에 포함한다.

## 무호출 용량·전송 확인

기존 실제 generation5개·완전한 원문·이전 불변 표면 catalog를 읽기 전용으로 참조했다. 새 후보 생성기/NER는 구현하지 않았다. 원래 후보47개의 위치는 기존 strict anchor locator로 확인했다. 원문/proposal은 현재 codec로 복원했고 모든 후보/대상 쌍을 유지했다.

| 자료 | 후보 / 쌍 | 새 draft 전체 envelope | 원래 생성 실제 잔여total | output cap | 입력 여유 |
| --- | ---: | ---: | ---: | ---: | ---: |
| G | 5 / 15 | 8,922 | 16,460 | 1,100 | 7,538 |
| H | 8 / 16 | 8,559 | 16,789 | 1,100 | 8,230 |
| I | 3 / 6 | 8,234 | 16,843 | 1,100 | 8,609 |
| J | 24 / 192 | 12,277 | 14,904 | 890 | 2,627 |
| K | 7 / 42 | 9,563 | 16,140 | 1,100 | 6,577 |

draft tool review_role_links_v1·identity issuedigest_role_links_v1·profile role-link-review-v1이며 새 지침1,982byte·실제 raw/normalized 동적 schema와 framing2,048·출력reserve를 포함한 UTF8 예약량이다. 범위를 좁히고 schema/지침/출력 의미도 바꿨으므로 기존 table 감사와 동등한 업무의 효율 비교가 아니다.

모델에 origin을 함께 보여 준 초안은 J envelope12,800이었다. origin을 서버에 보존하고 공급자 투영에서만 숨긴 다음 초안은12,242, 명시 역할 순서를 추가한 최종 초안은12,277이다. JSON 직렬화의 객체 키 정렬과 검증기의 역할 순서가 다르다는 독립 검토 지적을 재현하고 role_order로 수정했다. 세 초안의 mock HTTP5개씩 총15개를 보존했으며 no-store·low·명시 default tier·30초·각 실제 잔여/cap과 dynamic output parse를 확인했다. 최종 초안의 잘못된 행/열/부호/미검토 완료표시/타입90개를 거부했고 명시 순서/복수 역할·순서 누락/변조15개 회귀를 확인했다. 실제 provider 요청0·token/관계 의미/비용 개선 관측0이다.

### 출력은 아직 실제 완료 인수 전

J192쌍의 모두 불확실인 행렬 carrier는461 UTF8byte, 동일 상태의 개별 객체 carrier는13,018byte다. 이는 합성 표현 크기이며 실제 필요한 역할 판정이나 모델 토큰 수가 아니다. 모든 cell에8역할이 함께 있는 극단의 행렬은1,805byte로 커진다. mock usage111/22는 합성값이며 실제 이 carrier의 출력 토큰 측정이 아니다.

최소 carrier에 planning reasoning320/tool64를 더한 시제품 참고값은844로 cap890보다 작지만, **단위 변환/모델 reasoning 상한을 검증한 보장이 아니며 실제 요청 승인·완료 인증으로 쓰지 않는다.** reasoning/공백/여러 역할의 길이와 실제 serialization에 따라 출력이 부족할 수 있다. 런타임 cap은 기존 값 그대로이고 모델이 끝내지 못한 cell은 미검토/미완료로 남기거나 provider 미완료 전체 거부·알려진 사용량 보존으로 끝낸다. 재호출·원문/후보 절단·예산 인상으로 성공시키지 않는다.

## 호출·인수 순서

1. 새 순수 후보/domain/관계 report의 재구성·명시 coverage·타입/변조·미검토/불확실/overflow 계약을 TDD로 구현한다. 현재는 설계 단계다.
2. 단일 borrowed Model의 별도 실험 SDK를 연결한다. 기존 generation의 실제 사용량을 total20,000/output2,500에서 차감하고 output=min(1,100,2,500−generation.output)을 유지한다. 원래 generation을 새로 호출하지 않는다. 1회/30초/no-store·retry/repair/fallback0·known/unknown/late 실패 사용량을 보존한다.
3. 이 stage는 향후 실험에서 기존 후속 검수를 **대신하는 후보 관계 분류**이지, 기존 생성+검수에 추가 유료 요청을 붙이는 구성이 아니다. 출력 의미/coverage가 다르므로 기존 감사와 기능 동등성을 주장하지 않는다. 앱의 전체24,000/output2,500·권한/내구 인수와 연결은 별도다.
4. 코드·지침·schema를 고정한 뒤 새 사전 기준/비용 상한으로 역할 연결/복수 역할·관련 없음 오탐·불확실/미검토·출력 완료·비용을 실제 확인한다. H/J 누락 해결이나 I의 올바른 역할 판정을 mock만으로 인증하지 않는다. 미관측 자료·후보 자체의 recall/오탐·G사람 재판정도 남는다.
5. 원래 proposal과의 의미 비교/중요도 판단은 별도 계약을 설계한다. 자동 hard 누락·자동수리·원래 점수 갱신·제품 임시 검수 UI를 만들지 않는다.

이번은 spec-driven-workflow 문서 예외의 연구/설계·비공개 시제품이며 새 production 코드/SDD/QA/서버 자원을 만들지 않았다. 코드가 같아 전체8,099개QA 증거를 재사용한다. 독립 설계/시제품 검토와 PR/Sites 게시의 최종 기록은 진행 기록을 따른다.

독립 설계/시제품 검토에서 역할 순서 I1을 재현·수정하고 scoped 재검토 최종 C0/I0/M0를 확인했다. 세 초안/수정 전후 wire·회귀/검토 59개 증거를 불변 manifest로 보존한다. 이는 새SDK/실제 의미·출력 완료 인수를 대신하지 않는다.
2 changes: 1 addition & 1 deletion docs/planning/implementation-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

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

[무손실 table SDK](../changes/role-table-audit-implementation.md) 후 [실제 검수5회](../research/role-table-acceptance.md)를 진행했다. 원래 generation/전체 원문을 유지한 채 J의 검수 입력 차단은 통과했으나 사전8대상은 탐지2/미탐6·추가hard3판정유보다. 원래 생성 비분쟁1/4·G사람 재판정/기존 실패와 비용을 보존하고 앱 연결을 보류한다. 다음은 수치별 역할 후보/적용관계·명시coverage/불확실/overflow의 용량 설계다. 기존 전체hint-grid 즉시 추가·원문 절단·한도 인상·소진 runner 재실행은 하지 않는다. 미관측 자료 품질·전체 앱 예산/권한/내구 인수도 후속이다.
[table 검수 실제5회](../research/role-table-acceptance.md)의 2탐지/6미탐·추가hard3유보를 보존하고 [수치별 역할 연결 coverage](../changes/role-link-coverage.md)를 설계했다. 원문/추출을 유지한 명시 행렬로 복수역할/관련없음/불확실/미검토를 구분하는 안이며 현재는 무호출 시제품이다. 후보가 원문 전체를 포괄하거나 원래 추출 누락/중요도를 자동 판정한다고 주장하지 않는다. 다음은 순수 catalog/domain/report 재구성·변조·coverage/locate/overflow 계약의 TDD 구현과 별도 bounded SDK 판단이다. 실제 부호/관계 정확도·출력 완료/후보 recall·G사람 재판정·앱 전체 예산/권한/내구 인수 전 앱 연결은 보류한다.

## 제품 여정

Expand Down
Loading
Loading