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
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# IssueDigest

현재 연구: [동일 계약 추론 비교](docs/research/measurement-reasoning-comparison.md). 네 시도 중 반환2개 모두 의미 미충족·다른2개 미판정으로 설정/앱을 바꾸지 않았다. [공유 측정 맥락](docs/changes/shared-measurement-context.md)을 다음 구현으로 설계했다. 실행 코드는 불변이다.
현재 구현: [공유 측정 맥락](docs/changes/shared-measurement-context.md). 공통 항목/범위·보고 사건을 명시 연결하고 목적을 조건과 분리하는 순수 adapter를 추가했다. 독립 검토와 전체6,916개 검사를 통과했다. 새 모델 호출0이며 provider 용량·미관측 의미 품질·앱 연결은 후속이다. 기존 결과와 요청 설정은 보존한다.

현재 연구: [동일 계약 추론 비교](docs/research/measurement-reasoning-comparison.md). 네 시도 중 반환2개 모두 의미 미충족·다른2개 미판정으로 설정/앱을 바꾸지 않았다. 공유 맥락의 설계 후 순수 구현은 위 현재 기록을 따르며, 이 연구 당시 실행 코드는 보존했다.

현재 구현: [측정 범위 생성·문장 상태 근거](docs/changes/measurement-frame-generation.md). 새 범위 계약과 단일 요청을 연결하고 전체6,667개 검사를 통과했다. 실제4회는 수치17개를 보존했지만 의미 기준0/4로 앱 적용을 보류한다. [결과·남은 오류](docs/research/measurement-frame-generation-acceptance.md)를 보존한다.

Expand Down
4 changes: 3 additions & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# 문서 안내·협업 방법

현재 연구: [동일 계약 추론 비교](research/measurement-reasoning-comparison.md). 네 시도 중 반환2개 모두 의미 미충족·다른2개 미판정으로 설정/앱을 바꾸지 않았다. [공유 측정 맥락](changes/shared-measurement-context.md)을 다음 구현으로 설계했다. 실행 코드는 불변이다.
현재 구현: [공유 측정 맥락](changes/shared-measurement-context.md). 공통 항목/범위·보고 사건을 명시 연결하고 목적을 조건과 분리하는 순수 adapter를 추가했다. 독립 검토와 전체6,916개 검사를 통과했다. 새 모델 호출0이며 provider 용량·미관측 의미 품질·앱 연결은 후속이다. 기존 결과와 요청 설정은 보존한다.

현재 연구: [동일 계약 추론 비교](research/measurement-reasoning-comparison.md). 네 시도 중 반환2개 모두 의미 미충족·다른2개 미판정으로 설정/앱을 바꾸지 않았다. 공유 맥락의 설계 후 순수 구현은 위 현재 기록을 따르며, 이 연구 당시 실행 코드는 보존했다.

현재 구현: [측정 범위 생성·문장 상태 근거](changes/measurement-frame-generation.md). 새 범위 계약과 단일 요청을 연결하고 전체6,667개 검사를 통과했다. 실제4회는 수치17개를 보존했지만 의미 기준0/4로 앱 적용을 보류한다. [결과·남은 오류](research/measurement-frame-generation-acceptance.md)를 보존한다.

Expand Down
34 changes: 29 additions & 5 deletions docs/changes/shared-measurement-context.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# 공유 측정 맥락 · 다음 구현 설계
# 공유 측정 맥락 · 순수 계약

2026-10-21. 상태: 설계, 미구현. [동일 계약 추론 비교](../research/measurement-reasoning-comparison.md) 이후의 구현 단위다. 브리핑 제품 방향/기존 앱은 바꾸지 않으며 기존 실패를 변환해 성공으로 세지 않는다.
2026-10-21. 상태: 순수 계약 구현·합성 구조 인수 완료. 생성 SDK·실제 의미 인수·앱 적용은 미완료. [동일 계약 추론 비교](../research/measurement-reasoning-comparison.md) 이후의 구현 단위다. 브리핑 제품 방향/기존 앱은 바꾸지 않으며 기존 실패를 변환해 성공으로 세지 않는다.

## 해결할 문제

현재는 수치마다 대상·범위·발표자·기간·상태·보고 시제를 반복해서 채운다. 최신 제한 비교에서도 국가는 측정 대상으로 들어갔고, 같은 자료의 범위는 비었으며, 미래 공급 행위를 과거 발표의 시제로 사용했다. 추론 토큰 사용만으로 전체 의미 기준을 충족하지 못했다. 모델 성능 일반 결론이나 새 구조의 성공을 미리 주장하지 않는다.

## 제안 계약
## 구현 계약

| 구성 | 역할 | 제안 상한 |
| --- | --- | --- |
Expand All @@ -33,9 +33,33 @@

## 다음 작업과 인수

- [ ] 순수 공유 맥락·보고 사건·수치 연결 계약, strict canonical 입력·위변조 거부·명시 확장·기존 프레임 재생성 구현.
- [ ] 합성 자료에서 같은 항목/서로 다른 국가·지역, 범위 상속/추가, 명시 발표와 운영자, 발표 시제와 미래 행위, 목적과 조건을 독립 검증. 공유 ID/unused record/중복/없는 참조/다른 인용·합친 범위 상한도 검사.
- [x] 순수 공유 맥락·보고 사건·수치 연결 계약, strict canonical 입력·위변조 거부·명시 확장·기존 프레임 재생성 구현.
- [x] 합성 자료에서 같은 항목/서로 다른 국가·지역, 범위 상속/추가, 명시 발표와 운영자, 발표 시제와 미래 행위, 목적과 조건을 독립 검증. 공유 ID/unused record/중복/없는 참조/다른 인용·합친 범위 상한도 검사.
- [ ] provider bytes/출력·실제 budget 측정 후 생성 연결. 기존 raw/판정은 유지하고 고정 사례와 새로운 미관측 실제 자료를 별도 사전 기준·호출 상한으로 평가.
- [ ] 전체 앱 예산·현재 권한·내구 실행/복구·실제 브리핑 품질을 인수한 뒤 앱 반영 판단. 설계/합성 검사/새 모델 반환/의미 인수/앱 적용을 구분.

설계 비용: 공유 맥락을 잘못 선택하면 여러 수치에 같은 오류가 전파될 수 있다. 따라서 명시 연결과 원본/확장 결과를 모두 검증·기록해야 한다. 새 계약 유지와 모델 품질/용량 인수가 추가되며, 이번 비교만으로 구조 변경의 효과를 입증하지 않았다.

## 이번 순수 구현의 확정 계약

`shared_measurement_context.py`의 별도 v1 계약만 추가한다. 앱·생성 SDK·기존 요청 bytes/기준/결과·예산·수집기·의존성은 변경하지 않는다. 새 모델 호출은 없다.

- `SharedMeasurementInput`은 contexts/events/bindings/relations를 모두 필수로 받는다. 각 상한은12/12/12/16이며 빈 전체 입력은 허용한다. ID는1~64자 ASCII 영숫자·밑줄·하이픈이며 그룹 내 고유하다. context/event는 반드시 사용되어야 하고 없는 참조는 거부한다. binding의 candidate_id는 기존 후보를 사용하며 중복 선택은 거부한다.
- `SharedMeasurementContext`는 context_id, reporting_event_id, measured_variable, target_scopes, period, value_status, logical_condition, purpose, forecast_basis, comparison_baseline을 모두 필수로 받는다. anchor 역할은 nullable이고 scopes는 최대4개다. 값 상태는 기존 observed/planned/forecast/unknown이다.
- `SharedReportingEvent`는 event_id, kind, reporting_actor, predicate, reporting_tense를 모두 필수로 받는다. attributed_report는 actor/predicate 필수, narration은 actor=null/predicate 필수, unknown은 actor/predicate=null 및 tense=unknown이다. 알려진 시제는 predicate가 필수다. 어떤 술어가 실제 보고인지는 의미 인수에 남긴다.
- `SharedNumericBinding`은 candidate_id/context_id/target_scopes/status_evidence_sentence_id를 필수로 받는다. status sentence는 nullable이며 알려진 값 상태면 필수다. 제공된 ID는 해당 후보의 수치를 포함한 현재 전체 문장이어야 하고 exact nonblank 길이1~1000이다. 서버가 그 전체 문장을 status_text로 만든다. 개별 역할 override는 없다.
- 명시 context와 event만 확장한다. 공통 scopes 뒤 개별 scopes를 붙여 최대4개다. 같은 resolved 위치 중복과 다른 인용의 모든 anchor(목적 포함)를 거부한다. 같은 유형의 다른 위치 범위는 허용한다. 원문상 목적/조건이 같은 위치라는 이유로 의미 판정을 대신하거나 자동 교정하지 않는다.
- `SharedMeasurementFrame`은 고정 profile shared-measurement-context-v1/status unreviewed, 원래 input, 파생 MeasurementScopeFrame, 입력 contexts 순서의 context별 resolved purpose(nullable)를 보존한다. purpose는 logical_condition에 복사하지 않는다. current source에서 전체 wrapper를 재구성해 비교하고 strict canonical 실제 타입·숨은 extra/subclass·위변조는 기존 패턴으로 거부한다. 오류는 source/검증 상세와 chain을 노출하지 않는다.
- 관계는 기존 ContextualFrameRelationInput 그대로 받고 기존 전체 statement/cue/참조/중복/순환 검사를 재사용한다. 모호한 관계를 버리거나 첫 위치를 고르지 않는다. 원문 일치·구조 검증은 의미/진실/중립/권한 승인이 아니다.

### Task 1 — 순수 계약과 회귀 검사

- [x] 새 모듈과 합성 테스트만 추가하여 위 계약을 구현한다. 기존 모듈/fixture/SDK는 수정하지 않는다. 같은 항목·서로 다른 지역, 공통+개별 범위, 보고자/행위자·보고 시제/미래 행위, 목적/조건을 구분하는 합성 사례와 직접 관계 재사용을 검증한다. 각 상한·빈 입력·중복/없는/unused 참조·cross quote·exact 문장 상태·canonical 우회/위변조·오류 비노출을 독립 검사한다. 적절한 RED→GREEN과 focused/agents lint·typecheck를 기록한다.

## 구현·검증 기록

`build_shared_measurement_frame` / `validate_shared_measurement_frame`은 원래 입력·분리 목적·파생 프레임을 현재 원문에서 재구성한다. 별도 새 모듈/합성 테스트만 추가했고 기존413개 실행/설정 파일·wire fixture·원래 응답/판정은 변경하지 않았다. 소스 `86e42721058de43bbb3b47fd2222e13ad80e2438`의 전체6,916개(Python6,096+JavaScript820)와 lint/format/typecheck/build/OpenAPI 검사를 통과했다. 구현자 TDD 기록·별도 태스크/최종 검토를 보존한다.

모델 호출0·앱/서버/main/운영 변경0이다. 합성 사례는 정해진 연결의 원문 재현을 검사하며 AI가 그 맥락을 올바르게 선택하거나 실제 브리핑이 개선된다는 증거는 아니다. 기존 생성4회 의미0/4 및 추론 비교 반환2의 의미0/2·다른2미판정을 재판정하지 않는다. 다음은 새 provider schema의 실제 용량과 미관측 자료 의미 품질을 별도 상한으로 인수하는 것이다.

최종 검토의 경미한 상한 테스트 지적은 테스트 전용 `d6b3e93`에서 보강했다. 네 필드 각각 strict schema의 정확 too_long 위치/종류를 검사하고, 메모리에서 상한만 제거한 대조4/4가 실패함을 확인했다. 생산 코드는 `86e4272`와 동일하며 최종 테스트249개·Ruff/형식 검사를 별도로 통과했다. 전체6,916개 결과는 상한 보강 전 테스트를 포함한 `86e4272`의 실행이며 보강 후 전체를 다시 실행한 것으로 표시하지 않는다.
4 changes: 2 additions & 2 deletions docs/planning/implementation-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ SDK 단독 상한은 요청1회·입력+출력12,000/출력500/15초다. 실제
| --- | --- | --- | --- |
| M1 · 질문에서 브리핑까지 | 로그인·권한·저장 검색·AI 생성·정확 인용·저장/재열람·실패/취소/복구 연결 | 기반 완료 · 개인 개발 적용 | 개발 웹/API/워커ab6654e/v9·전체4,655개/독립 검토·실제 HTTPS/보존 복원. 의미 품질 부분 충족이며 운영 출시와 구분 |
| M2 · 자료 확보·갱신 | 승인 출처를 반복 확보하고 변경/중복·실패·수집 범위/최신성을 추적, 과거 근거 보존 | 진행 중 | 시간당 고정 기사 확보·명시 승인 편입과 날짜/발행처 후보 비교를 구현. 새 공식 텍스트1건 추가·전체3,603개·독립 검토·검색/재실행·사후23테이블 일치 복원 확인. 다매체 확대·최근 주목도·자동 승인/게시 완료는 아님 |
| M3 · 근거 중심 자율 조사 | 질문별 승인 도구 탐색·비교·자료 부족 판단과 검증 모듈 전달, 비용/취소/복구 | 진행 중 · 프레임 생성/의미 인수 | 새 프레임SDK 실제2회 반환1/거부1·의미0/2·전체5937개. 원래 실패/비용 보존. 다음 모델 제한 비교·반복anchor/대상/관계·앱 인수 후속 |
| M3 · 근거 중심 자율 조사 | 질문별 승인 도구 탐색·비교·자료 부족 판단과 검증 모듈 전달, 비용/취소/복구 | 진행 중 · 공유 맥락 순수 계약 | 공통 대상/범위·보고 사건·분리 목적의 명시 연결과 전체6,916개 검사 완료. 실제 AI 선택·미관측 의미 품질·전체 앱 인수는 후속이며 기존 실패 보존 |
| M4 · 관심 이슈·변화·공유 | 개인 소유·관심 해제/삭제, 새 사실·공식 결정·정정과 알림함, 동의한 불변 공유본 | 예정 | 소유/접근 모델·변경 근거부터 구현. 현재 검증용 공유 이력을 개인 보관함으로 간주하지 않음 |
| M5 · 이슈 발견·개인화 | 실제 매체 관측/중복 제거/선정 이유와 동의한 관심 신호의 혼합 | 예정 | 출처/기간/갱신 데이터와 신호 정책·다양성 평가. 임의 인기·여론 점수를 만들지 않음 |
| M6 · 공개 운영 | 실제 질문 품질·지연/비용·권한·백업 복원·공개 이용 정책 충족 후 출시 판단 | 예정 · 운영 게시 유예 | 개발 HTTPS·앱 백업 복원 기반은 있음. 전체 출시 조건과 D013 별도 승인 필요 |
Expand Down Expand Up @@ -150,4 +150,4 @@ D022의 제한 한국어 검색·운영자 read-only 평가와 v4는 실제 모

## 의미 품질 후속 · 공유 측정 맥락 설계

[동일 계약 추론 비교](../research/measurement-reasoning-comparison.md)의 반환2건도 의미 기준을 충족하지 못했고2건은 미판정이다. 추론만 켜면 해결된다고 가정하지 않는다. [공유 측정 맥락 설계](../changes/shared-measurement-context.md)는 공통 대상/범위/기간과 보고 사건을 명시 연결하고 기존 프레임으로 확장한다. 목적과 논리 조건을 분리하며 자동 추정 상속/사후 수리는 하지 않는다. 설계만 기록했으며 새 계약 구현·미관측 의미 인수·용량/전체 앱 검증이 남는다.
[동일 계약 추론 비교](../research/measurement-reasoning-comparison.md)의 반환2건도 의미 기준을 충족하지 못했고2건은 미판정이다. 추론만 켜면 해결된다고 가정하지 않는다. [공유 측정 맥락 설계](../changes/shared-measurement-context.md)는 공통 대상/범위/기간과 보고 사건을 명시 연결하고 기존 프레임으로 확장한다. 목적과 논리 조건을 분리하며 자동 추정 상속/사후 수리는 하지 않는다. 순수 계약·합성 구조 인수와 독립 검토는 완료했다. 새 provider 용량·미관측 의미 인수·전체 앱 검증이 남는다. 모델 호출과 앱 변경 없이 기존 결과/기준을 보존한다.
16 changes: 16 additions & 0 deletions docs/planning/progress.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,19 @@
# 공유 측정 맥락 · Sites v88 영수증 · 2026-10-21 KST

[Draft PR66](https://github.com/DigestWorks/IssueDigest/pull/66)은 PR65 기반이다. Sites v88 native succeeded(2026-10-21T12:58:25.195086+09:00), source `d7f74621a9ace19cab40fb298dcc3737c8827685`, 저장소 사본 `4e7de580dac3a0f4aaad016e8aea10cd6aa26469`. 사본 이후 최종 출판 영수증은 원본 저장소를 따른다. 이전v87 보존·HTML73/로컬 링크·asset·anchor1442/공개 텍스트212·private26종 포함221파일 제외 검사를 확인했다. 텍스트/기록 변경으로 browser QA는 하지 않았으며 사용자 탭을 열거나 이동하지 않았다.

생산 코드86e4272의 전체6,916개 검사와 테스트 전용d6b3e93의 별도249개/네 상한 제거 대조를 구분한다. 태스크·최종 독립 검토/수정분 재검토 완료, 기존413 실행/설정 파일·이전18evidence/최근65연구JSON 불변을 확인했다. 소유 QA1개는 ID/이름/image/label/loopback binding 검증 후 삭제했고 이 작업의 SDD 자료만 private 보존/정리했다. 다른 자원과 기존 worktree는 유지했다. 새 모델 호출·앱/서버/main/운영 변경0이며 실제 AI 선택/의미 품질·생성 용량·앱 통합은 후속이다.

# 공유 측정 맥락 · 순수 구현·검증 · 2026-10-21

[명세](../changes/shared-measurement-context.md). 공통 항목/범위·보고 사건을 명시 ID로만 연결하고 목적을 조건과 분리했다. 원래 입력·resolved 목적·파생 기존 프레임을 현재 source에서 전부 재현하며 unused/없는 참조·다른 인용·중복/상한·위변조를 거부한다. 기존 모듈과 요청/결과를 보존한 새 순수 모듈/합성 테스트다.

코드 `86e42721058de43bbb3b47fd2222e13ad80e2438`의 전체6,916개(Python6,096+JavaScript820)·Ruff/format/mypy·ESLint/TypeScript/build/OpenAPI 검사를 통과했다. 구현 TDD·별도 태스크/최종 독립 검토와 소유 QA 증거를 private 기록에 보존했다. 기존413 실행/설정 파일·이전 연구/응답/판정 불변을 별도로 확인한다.

최종 상한 테스트 보강은 `d6b3e93`의 테스트 전용 변경이다. 네 상한 제거 대조4/4 실패·정상249개/정적 검사를 별도로 확인했고 생산 코드는 전체 검사 당시와 동일하다. 전체 검사를 보강 후 다시 실행한 것으로 기록하지 않는다.

새 모델 호출0·앱/서버/main/운영 변경0이다. 합성 구조 통과가 실제 AI 의미 개선은 아니다. 이전 생성 의미0/4·추론 비교 반환2의 의미0/2/다른2미판정과 비용 미확인은 유지한다. 다음은 새 provider schema/출력 용량·미관측 실제 자료 의미 품질, 이후 전체 앱 예산/권한/내구 실행 인수다. [Draft PR66](https://github.com/DigestWorks/IssueDigest/pull/66)은 PR65 기반이다. Sites 요약/이전v87 보존·출판 영수증은 후속 기록으로 확정한다.

# 동일 계약 추론 비교 · Sites v87 영수증 · 2026-10-21 KST

[Draft PR65](https://github.com/DigestWorks/IssueDigest/pull/65)은 PR64 기반이다. Sites v87 native succeeded(2026-10-21T12:26:10.589073+09:00), source2df52779c219d374092638944a54146267dc205c, 저장소 사본73a5da35f4978f147d2dcb26e7e3dfe2d49412cc. 사본 이후 최종 영수증은 원본 저장소를 따른다. 이전v86 보존·HTML72/로컬 링크·asset·anchor1420/공개 텍스트211·private source/ID26종 포함219파일 제외 검사를 확인했다. 텍스트/기록 변경으로 browser QA는 하지 않았고 사용자 탭을 열거나 이동하지 않았다.
Expand Down
2 changes: 1 addition & 1 deletion docs/planning/tasks.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

- [x] [동일 계약 추론 설정 비교](../research/measurement-reasoning-comparison.md): 최대4시도·응답확인3·반환2/거부2, 의미판정가능2건 모두 미충족·2건미판정. 상한 소진/원래 기준 유지.
- [x] [공유 측정 맥락](../changes/shared-measurement-context.md) 다음 구현 설계와 비용/제한 기록(코드 구현 아님).
- [ ] 공유 측정 맥락·보고 사건·수치 연결의 순수 계약과 기존 프레임 확장 구현.
- [x] [공유 측정 맥락](../changes/shared-measurement-context.md)·보고 사건·수치 연결의 순수 계약/전체 재구성·합성 검사·독립 검토 완료. 새 모델/앱 적용과 구분.
- [ ] 새 provider/용량 검증·미관측 실제 자료 인수, 전체 앱 예산/내구 실행 확인 뒤 반영 판단.

## 측정 범위 생성 · 현재
Expand Down
Loading
Loading