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,3 +1,5 @@
현재 구현: [질문별 브리핑 조합·근거 검증](docs/changes/question-briefing-composition.md). 새 분석 영수증을 출처가 추적되는 요약·비교·타임라인 제안으로 묶습니다. 불확실성과 미반영 관련 명제를 보존하는 순수 계약이며 최종 생성·저장/API/UI·개발 적용은 후속입니다. 신규97개·새 전체9,886개·정적/타입/빌드/OpenAPI·독립 검토를 통과했습니다.

현재 구현: [질문별 자동 분석·결과 수집](docs/changes/question-plan-runner.md). 한 실행에서 자료별 완료를 기다리고 다음 분석으로 이어갑니다. 모든 완료 영수증을 현재 권한·원문으로 다시 검증해 모으며, 브리핑 합성·API/UI·개발 적용은 후속입니다. 신규73/집중78·새 전체9,789개·정적/타입/빌드/OpenAPI·독립 검토 C0I0M0를 통과했습니다.

현재 구현: [질문별 순차 AI 작업 연결](docs/changes/question-plan-dispatch.md). 고정한 자료를 순서대로 기존 영속 작업으로 접수하고, 같은 요청은 완료한 분석을 재사용합니다. 기존 활성 작업1개·합산 예약 예산을 유지하며 브리핑 변환·자동 진행·API/UI·개발 적용은 후속입니다. 집중91/새 전체9,716개·정적/타입/빌드/OpenAPI·독립 최종 수정 검토 C0I0M0를 통과했습니다.
Expand Down
2 changes: 2 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
현재 구현: [질문별 브리핑 조합·근거 검증](changes/question-briefing-composition.md). 원본 명제·조건·누락 coverage를 유지하고 자유 문장을 미검토로 표시하는 별도 조합 계약입니다. 신규97개·새 전체9,886개·정적/타입/빌드/OpenAPI·독립 검토를 통과했습니다.

현재 구현: [질문별 자동 분석·결과 수집](changes/question-plan-runner.md). 한 실행에서 자료별 완료를 기다리고 다음 분석으로 이어갑니다. 모든 완료 영수증을 현재 권한·원문으로 다시 검증해 모으며, 브리핑 합성·API/UI·개발 적용은 후속입니다. 신규73/집중78·새 전체9,789개·정적/타입/빌드/OpenAPI·독립 검토 C0I0M0를 통과했습니다.

현재 구현: [질문별 순차 AI 작업 연결](changes/question-plan-dispatch.md). 질문 검색의 고정 선택과 기존 작업/queue를 연결하며 신규 외부 모델 호출이나 앱 활성화는 이번 검증에 포함하지 않습니다. 집중91/새 전체9,716개·정적/타입/빌드/OpenAPI·독립 최종 수정 검토 C0I0M0를 통과했습니다.
Expand Down
29 changes: 29 additions & 0 deletions docs/changes/question-briefing-composition.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# 질문별 분석을 근거가 추적되는 브리핑으로 조합

2026-10-26. [자동 분석·완료 수집](question-plan-runner.md) 다음 단계. 현재 작업은 새 분석 영수증에서 사용 가능한 문장·비교·시간축 제안을 검증하는 순수 조합 계약이다. 실제 최종 모델 송신·영속 저장·API/UI 연결·개발 적용과 구분한다. 기존 단일 출처 해석을 확인된 사실로 승격하지 않는다.

## Global Constraints

- NEW execution files ONLY: packages/agents/src/issuedigest_agents/question_briefing.py and packages/agents/tests/test_question_briefing.py. All existing tracked non-Markdown files and previous runner proof files byte-identical. No dependency/export/config/DB/migration/API/UI changes, provider calls, model clients, DBOS registration, operational server/DB, main merge or app activation. Pure composition only. Do not masquerade as historical research-v10 or canonical Canvas/human review/public publication.
- Public entry points build_question_briefing(question, sources:tuple[Source,...], receipts:tuple[GuardedQuestionEvidenceGenerationV2,...], proposal:QuestionBriefingProposal|dict)->QuestionBriefing and validate_question_briefing(question,sources,receipts,result:QuestionBriefing|dict)->QuestionBriefing. Canonical Source is existing snapshot/EvidenceBundle/SourcePresentation tuple. Source count1..5, unique snapshot/document-version/citation IDs, same workspace, receipt count exact order. Use unchanged validate_guarded_question_evidence_v2 for current quote/question/instructions/prompt/usage validity. Existing receipt evidence.source_sha256 already binds the COMPLETE canonical source dict (snapshot_id, validated EvidenceBundle and SourcePresentation JSON via unchanged question_evidence_propositions._source). Reuse that helper/digest and expose source_sha256 on the new source output; do not invent another hash algorithm or claim the prompt alone binds metadata. Validate all actual input types before normalization (no bool/int coercion, subclasses/extra/missing fields/model_construct/model_copy drift), use existing guards narrowly. Preserve existing validators' sanitized internals but new boundary fixed QuestionBriefingError with no sensitive text/cause/context. No logging. Question uses original exact nonblank str length1..1500 (no trimming).
- Strict/frozen/extra-forbid proposal models. QuestionBriefingProposal outcome answer/insufficient_evidence, message required nullable max500, modules tuple max3. Answer requires modules, no message, first exactly one summary (no later summary), summary claims1..4. Other modules comparison (2..4 claims) or timeline(1..4). Titles nonblank<=100, texts nonblank<=400. A claim has text, references tuple1..8 of unique local reference {snapshot_id:UUID4,proposition_id:p1..p24}, event_date:date|None REQUIRED. Timeline requires date; other modules forbid dates. No category supplied by model. No HTML/executable module types or arbitrary action fields; text remains plain untrusted text for downstream safe renderer, not HTML certification.
- A reference must resolve to the corresponding CURRENT validated receipt and to its question-linked proposition OR a transitive dependency of a linked proposition. Compute closure without changing order/graphs; reject unknown/duplicate refs, unrelated proposition use, cross-source local-ID collision, and cycles through existing receipt guard. Claim output epistemic_status is source_statement only if EVERY referenced proposition AND ALL their transitive dependencies are source_statement, else uncertain (never documented/fact/human-reviewed). No caller category input. Recheck full source receipts, not only referenced ones. Do not flatten facets or numeric conditions into fabricated facts; retain all original validated receipt evidence in output with full source identity and prompt/instruction/usage provenance.
- QuestionBriefing profile question-briefing-v1/status unreviewed; binds question SHA256, workspace UUID4, sources tuple (snapshot_id, source_sha256 of full canonical source, receipt actual typed full object), outcome/message and derived modules/claims. Store original proposal in full to allow exact rebuild. Derived claim retains text, references, event_date and derived epistemic_status. Coverage per source contains ALL linked proposition IDs and closure IDs in original proposition order plus used IDs in original order, including transitive deps used by claims; unrepresented linked IDs explicit (uncovered_linked_proposition_ids) and unresolved_reason EXACT receipt value. A partial selection must never look exhaustive. An insufficient_evidence result has no modules and message, but preserves all source receipts and coverage; an answer requires at least one referenced question-linked proposition somewhere (dependency-only answers rejected) and cannot have zero linked evidence across all sources. No arbitrary source dropping/no_match empty source pseudo-briefing. Same inputs/proposal deterministic value equality/JSON roundtrip; no random UUID/timestamp.
- Timeline event_date must have exact ISO YYYY-MM-DD literal in a supporting_refs span of at least one directly referenced proposition; source metadata/subject/facet-only unrelated supporting quote/prior model date not sufficient. It is a text anchor, NOT actual event-date semantic approval. No inferred dates or time facets converted automatically.
- Revalidate saved output by strict raw shape/type check and reconstruct from its stored proposal/current question/source/receipts, compare ENTIRE output; reject status/profile/category/text/date/order/receipt/hash/coverage/metadata mutation; don't silently repair saved output. New error raised OUTSIDE exception handler so cause/context absent. No partial output. Rebuild equality establishes source/structure consistency, not cryptographic origin: replacing proposal and matching derived prose together may form another valid unreviewed composition; persistence/authentication must protect the authoritative stored record.
- TDD RED missing module then minimal GREEN. Test genuine multi-source composition incl reused local p1, mixed uncertainty and transitive dependency, partial coverage/insufficient states; wrong source/question/prompt/instructions/receipt use, dates only in metadata/unrelated quote, forged hashes/coverage/categories, raw type/subclass/missing/extra/model_copy corruption; deterministic serialization roundtrip; zero networking/import activation. Scope tests use existing synthetic fixtures and restore introduced module/package attrs/sys.path fixture. No old tests/fixtures modified. Scoped Ruff/format/mypy; controller full npm run check and independent task/final review. Agent does not spawn agents.

## Task 1

- [x] Implement new2files with TDD and full strict original-input/rebuild validation, derived uncertainty/coverage/exact date anchors; scoped checks, self review and commit only new2files plus this checkbox. Write report in current SDD workspace with RED/GREEN evidence, commands/results/interfaces and limitations.

## Controller gates

- [x] Independent task/whole-branch review C0I0M0; full 9,886 tests/lint/type/build/OpenAPI; preservation494/44.
- [x] privacy/docs/Draft PR115/Sitesv137/previousv136+7exactdocs/ownedQA1+volume1 cleanup final handoff.
- [ ] Actual final-generation durable admission/provider meaning, storage/API/UI and development acceptance (outside this change).

## 판단과 비용

1. 원래 명제·조건·누락 coverage를 함께 보존하고 자유 문장은 미검토로 유지한다. 인용 연결만으로 의미 정확도를 인증하지 않으며 실제 모델 품질 검증은 별도로 필요하다.
2. 과거 Canvas 버전으로 위장하지 않는 별도 조합 계약을 둔다. 구형 화면에 즉시 연결되지 않으며 최종 모델·저장·표시 연결 작업이 남는다.
13 changes: 13 additions & 0 deletions docs/planning/implementation-plan.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,16 @@
## 현재 구현 · 새 분석을 브리핑 제안으로 조합

신규97·새 전체9,886개/정적/타입/빌드/OpenAPI·독립 검토 통과. [별도 조합 계약](../changes/question-briefing-composition.md)으로 문장·명제·출처를 연결하고 불확실성·미반영 근거를 유지합니다. 원문/영수증에서 제안 전체를 재검증하며 역사 Canvas의 모델·검토 버전을 재사용하지 않습니다. 최종 모델 송신과 영속 저장/API/UI·개발 적용은 별도입니다. 기존494실행·이전44증거 유지, 실제 제공자/운영 변경0입니다.


### 다음 연결 순서

1. **최종 생성 실행:** 검증한 자료별 영수증·원래 조건을 새 최종 모델 입력으로 연결한다. 기존 공유 비용 상한·현재 권한·원문 재검사를 유지하고 송신 여부가 불명확하면 자동 재호출하지 않는다. 모델 입력 한도와 실제 의미 품질을 별도로 검증한다.
2. **브리핑 저장·재열람:** 원래 제안과 조합 결과·출처 버전·사용량을 권한이 있는 서버 경로에서 함께 저장한다. 과거 모델/Canvas 이름을 새 실행에 붙이지 않으며 같은 요청의 재열람은 추가 생성 없이 처리한다. 이번 순수 재구성 검사를 저장 기록의 인증·불변성으로 오해하지 않는다.
3. **제품 연결:** 버전이 있는 API를 통해 짧은 브리핑·필요한 비교/변화·정확 근거를 표시한다. 질문 후 생성 중 상태·실패/취소·재열람까지 연결하고 휴대폰/PC 사용자 여정을 확인한 뒤 개인 개발판에 반영한다. 공개 게시를 자동화하지 않는다.

위 항목은 연결 순서이며 아직 구현/배포 완료가 아니다. 별도 관리 화면·임시 확인 UI는 추가하지 않는다.

## M3 진행 · 자동 분석·검증 결과 수집 완료

[자동 분석 진행 계약](../changes/question-plan-runner.md)은 신규73/집중78·새 전체9,789개·정적/타입/빌드/OpenAPI·독립 검토 C0I0M0를 통과했다. 기존 작업 완료를 기다려 같은 요청으로 다음 자료를 진행한다. 전체 대기와 진행 횟수를 제한하며 timeout/cancel 뒤 기존 작업은 유지한다. 현재 권한/원문과 모든 완료 영수증을 재검증해 브리핑 합성 입력을 만든다. 독립 부모 복구·브리핑/API/UI·실제 의미·개발 적용은 후속이다. 실제 제공자/운영/앱 활성화0이다.
Expand Down
14 changes: 14 additions & 0 deletions docs/planning/progress.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
## 최종 인계 · 질문별 브리핑 조합 · 2026-10-26

[Draft PR115](https://github.com/DigestWorks/IssueDigest/pull/115)은 feat/question-plan-runner 기반·미병합이다. 실행 ac7a914, 신규97/새 전체9,886개(Python9,066+JS820)·정적/타입/빌드/OpenAPI·실패/skip/warning0·태스크/전체 검토 C0I0M0·미해결0이다. 기존494실행·이전44증거와 전체 검사 시작 이후 신규2파일 bytes가 일치한다.

Sitesv137 public/native succeeded(2026-10-26T07:01:19.519682+00:00), source `da4586898ad3e75390f6ecb92b2adbfa71886458`, saved `appgprj_6ac612dd42708191a7a0c8377be64d48~appgver_c293e6fbc7a881918170a124167757d8`, deployment `appgdep_6adefaa257988191aa270d65bbdbc4af`다. 이전v136 정확 source/상대 경로 rewrite와 변경7문서 정확 사본(875b647)을 보존했다. HTML122/로컬대상3,746/공개텍스트380·비공개60+12항목 제외, 새브라우저QA/사용자탭 이동0이다. 이 게시 이후 최종 인계는 저장소 원본을 따른다.

자체QA1/전용 익명volume1과 현재 SDD만 정리하고25598포트 닫힘을 확인했다. 운영 자원/앱/기본worker/main 변경·실제 제공자 호출0이다. 두 판단과 비용을 명세·검증 기록·PR에 남겼다. 다음은 실제 최종 생성·영속 저장/API/UI·의미 품질·개발 적용이며 순수 조합을 앱 완성으로 세지 않는다. PR 첨부는 대화 첨부100개 한도로 실패했으나 URL/기록은 보존한다. 원격 CI 보고와 로컬 전체 검증은 구분한다.

## 검증 완료 · 질문별 브리핑 조합 · 2026-10-26

[조합 계약](../changes/question-briefing-composition.md)·[검증 범위](../research/question-briefing-composition-validation.md). 신규97개·새 전체9,886개(Python9,066+JS820)·정적/타입/빌드/OpenAPI·실패/skip/warning0, 독립 태스크/전체 검토 C0I0M0·미해결0이다. 기존494실행·이전44증거는 유지했다. 현재 원문·모든 영수증을 재검증하고 문장의 전이 불확실성·출처별 미반영 coverage·직접 근거 날짜를 보존한다. 모든 결과는 미검토이며 의미·진실/독립 사실검증을 인증하지 않는다.

이번 구현은 순수 브리핑 제안 조합·전체 재구성 검사다. 실제 최종 생성·영속 저장/API/UI·개발 적용은 후속이며 앱/기본 worker/main/운영 자원 변경과 실제 제공자 호출0이다. 전체 검사는 전용 로컬 합성 QA만 사용했다. Draft PR·Sites와 자체 QA 정리 최종 인계는 아래에 기록한다.

## 검증 완료 · 질문별 자동 분석·검증 결과 수집 · 2026-10-26

[계약](../changes/question-plan-runner.md)·[검증](../research/question-plan-runner-validation.md). 한 실행에서 기존 작업 완료를 기다리고 다음 자료를 진행한다. 완료 결과를 현재 세션/원문·canonical 영수증으로 다시 검증하며 부분 결과 없이 unreviewed 묶음으로 반환한다. 실행dca3341·신규73/기존queue5 포함 집중78·새 전체9,789개(Python8,969+JS820)·정적/타입/빌드/OpenAPI·실패/skip/warning0·태스크/전체 독립 검토 C0I0M0다. 기존492실행/이전49증거 보존, 실제 제공자/운영 변경0·앱/기본worker/main 유지다. 프로세스와 독립된 부모 복구·브리핑 합성/저장/API/UI·실제 의미/부하·개발 적용은 후속이며 PR/Sites·자체QA 정리는 최종 인계를 따른다.
Expand Down
8 changes: 8 additions & 0 deletions docs/planning/tasks.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
## 진행 · 질문별 브리핑 조합 · 2026-10-26

- [x] [미검토·원문 재검증·불확실성·coverage 조합 계약](../changes/question-briefing-composition.md) 고정.
- [x] 신규2파일 TDD·집중97개·독립 태스크/전체 검토 C0I0M0.
- [x] 새 전체9,886개/정적/타입/빌드/OpenAPI·기존494실행/이전44증거 보존.
- [x] privacy·문서·Draft PR115/Sitesv137·이전v136/7문서 사본·자체QA/volume1 정리(최종 인계).
- [ ] 실제 최종 생성·저장/API/UI·의미 인수·개발 적용(후속).

## 진행 · 질문별 자동 분석·검증 결과 수집 · 2026-10-26

- [x] [boundedwait·현재 권한/원문·완료 영수증 수집 계약](../changes/question-plan-runner.md) 고정.
Expand Down
Loading
Loading