2 lines
51 KiB
JSON
2 lines
51 KiB
JSON
{"audit_request":{"assertions":[{"assertion_id":"AC-01","condition":"static structure vs time-order ownership split","line_end":64,"line_start":64,"modality":"observed","object":"runtime call sequence (time-ordered detail)","predicate":"owns","quote":"다이어그램은 Learner → Lab Checkpoint → Feed Module → PostgreSQL → Evidence Record → Presentation 경로를 나타낸다. 이는 정적 구조와 증거 승격 경계를 설명하며, 시간 순서의 세부 호출은 §4 Mermaid가 소유한다.","scope":"architecture 3.1 diagram narrative","source_surface":"SURF-1737BC033680BD917E9B","subject":"section 4 Mermaid sequence"},{"assertion_id":"AC-02","condition":"unconditional","line_end":70,"line_start":70,"modality":"observed","object":"checkpoint checkout and observation procedure execution","predicate":"owns","quote":"| Learner | checkpoint를 checkout하고 관찰 절차를 실행한다 | Git, HTTP client, psql | 로컬 실행 환경 |","scope":"component responsibility table 3.2","source_surface":"SURF-1737BC033680BD917E9B","subject":"Learner"},{"assertion_id":"AC-03","condition":"unconditional","line_end":71,"line_start":71,"modality":"observed","object":"exposing learning reset/feed routes within profile","predicate":"owns","quote":"| Lab Checkpoint | 학습용 reset·feed 경로를 profile 안에서 노출한다 | Spring profile, HTTP API | Feed Module |","scope":"component responsibility table 3.2","source_surface":"SURF-1737BC033680BD917E9B","subject":"Lab Checkpoint"},{"assertion_id":"AC-04","condition":"unconditional","line_end":72,"line_start":72,"modality":"observed","object":"per-checkpoint query strategy execution","predicate":"owns","quote":"| Feed Module | checkpoint별 조회 전략을 실행한다 | Spring Data JPA, Hibernate | PostgreSQL |","scope":"component responsibility table 3.2","source_surface":"SURF-1737BC033680BD917E9B","subject":"Feed Module"},{"assertion_id":"AC-05","condition":"unconditional","line_end":72,"line_start":72,"modality":"observed","object":"Spring Data JPA/Hibernate and external dependency PostgreSQL","predicate":"uses","quote":"| Feed Module | checkpoint별 조회 전략을 실행한다 | Spring Data JPA, Hibernate | PostgreSQL |","scope":"component responsibility table 3.2","source_surface":"SURF-1737BC033680BD917E9B","subject":"Feed Module"},{"assertion_id":"AC-06","condition":"unconditional","line_end":73,"line_start":73,"modality":"observed","object":"fixture rows and SQL execution results","predicate":"produces","quote":"| PostgreSQL | fixture row와 SQL 실행 결과를 제공한다 | PostgreSQL, Docker Compose/Testcontainers | 없음 |","scope":"component responsibility table 3.2","source_surface":"SURF-1737BC033680BD917E9B","subject":"PostgreSQL"},{"assertion_id":"AC-07","condition":"unconditional","line_end":74,"line_start":74,"modality":"observed","object":"query/entity-load/row observation values and grades","predicate":"produces","quote":"| Evidence Record | 쿼리·entity load·row 관찰값과 등급을 기록한다 | Markdown, test report | 각 checkpoint 결과 |","scope":"component responsibility table 3.2","source_surface":"SURF-1737BC033680BD917E9B","subject":"Evidence Record"},{"assertion_id":"AC-08","condition":"on Docker runtime failure","line_end":80,"line_start":80,"modality":"observed","object":"cannot collect DB-based replay and integration evidence","predicate":"has_failure_behavior","quote":"| Docker runtime | 로컬 PostgreSQL과 Compose/Testcontainers 실행 | local container API | DB 기반 replay와 integration evidence를 수집할 수 없다 |","scope":"external dependency table 3.3","source_surface":"SURF-1737BC033680BD917E9B","subject":"Docker runtime"},{"assertion_id":"AC-09","condition":"on PostgreSQL failure","line_end":81,"line_start":81,"modality":"must_not","object":"SQL observation step fails and is not substituted with in-memory results","predicate":"has_failure_behavior","quote":"| PostgreSQL | fixture·native query·row 확인 | JDBC, psql | SQL 관찰 단계가 실패하며 in-memory 결과로 대체하지 않는다 |","scope":"external dependency table 3.3","source_surface":"SURF-1737BC033680BD917E9B","subject":"PostgreSQL"},{"assertion_id":"AC-10","condition":"operational deployment topology","line_end":85,"line_start":85,"modality":"unknown","object":"deployment-level evidence is still needs-confirmation and out of this project's verification scope","predicate":"other","quote":"운영 배포 토폴로지는 이 프로젝트의 검증 범위가 아니다. `lab` profile이 운영 환경에서 비활성이라는 deployment-level 증거는 아직 `needs-confirmation`이다.","scope":"deployment 3.4","source_surface":"SURF-1737BC033680BD917E9B","subject":"lab profile production-inactive evidence"},{"assertion_id":"IB-01","condition":"unconditional","line_end":154,"line_start":154,"modality":"must_not","object":"setting production RPS/P99 targets (record only per-checkpoint observations with environment)","predicate":"forbids","quote":"- **성능**: production RPS·P99 목표는 설정하지 않는다. checkpoint별 쿼리·entity load 관찰값만 환경과 함께 기록한다.","scope":"non-functional 7 performance","source_surface":"SURF-8D8922C8157DAD333D9A","subject":"project performance requirement"},{"assertion_id":"IB-02","condition":"unconditional","line_end":155,"line_start":155,"modality":"observed","object":"out of this project's scope","predicate":"other","quote":"- **가용성**: 운영 SLO는 이 프로젝트 범위가 아니다.","scope":"non-functional 7 availability","source_surface":"SURF-8D8922C8157DAD333D9A","subject":"operational SLO"},{"assertion_id":"IB-03","condition":"unconditional","line_end":156,"line_start":156,"modality":"must","object":"only local single learning run is in verification scope","predicate":"other","quote":"- **확장성**: 로컬 단일 학습 실행만 검증 범위로 둔다.","scope":"non-functional 7 scalability","source_surface":"SURF-8D8922C8157DAD333D9A","subject":"verification scope"},{"assertion_id":"IB-04","condition":"unconditional","line_end":157,"line_start":157,"modality":"must","object":"restricted to lab profile and not registered as route/use-case under normal profile","predicate":"requires","quote":"- **보안**: 학습 reset/API는 `lab` profile에 한정하고, 정상 profile에서는 route/use case가 등록되지 않아야 한다.","scope":"non-functional 7 security","source_surface":"SURF-8D8922C8157DAD333D9A","subject":"learning reset/API"},{"assertion_id":"IB-05","condition":"unconditional","line_end":158,"line_start":158,"modality":"must","object":"linking Hibernate Statistics, HTTP response, PostgreSQL row checks into the same checkpoint evidence","predicate":"requires","quote":"- **운영 / Observability**: Hibernate Statistics, HTTP response, PostgreSQL row 확인을 같은 checkpoint evidence에 연결한다.","scope":"non-functional 7 observability","source_surface":"SURF-8D8922C8157DAD333D9A","subject":"checkpoint evidence"},{"assertion_id":"IB-06","condition":"unconditional","line_end":159,"line_start":159,"modality":"observed","object":"DR not applicable and fixture regenerated via reset","predicate":"other","quote":"- **재해 복구 / DR**: 해당 없음. marker-owned local fixture는 reset으로 재생성한다.","scope":"non-functional 7 DR","source_surface":"SURF-8D8922C8157DAD333D9A","subject":"marker-owned local fixture"},{"assertion_id":"IB-07","condition":"unconditional","line_end":160,"line_start":160,"modality":"must_not","object":"using production data as input to this lab","predicate":"forbids","quote":"- **컴플라이언스**: 해당 없음. production 데이터는 이 랩의 입력으로 사용하지 않는다.","scope":"non-functional 7 compliance","source_surface":"SURF-8D8922C8157DAD333D9A","subject":"production data"},{"assertion_id":"PD-01","condition":"unconditional","line_end":142,"line_start":142,"modality":"must","object":"project-wide decision SSOT","predicate":"owns","quote":"> 프로젝트가 소유하는 project-wide decision SSOT다. 두 branch packet의 `Project Summary`와 byte-equivalent한 요약을 유지한다.","scope":"6.1 stable decision registry","source_surface":"SURF-798E20D490F0460B53F0","subject":"raw/project-notes/nplus1-presentation-prep.md"},{"assertion_id":"PD-02","condition":"unconditional","line_end":142,"line_start":142,"modality":"must","object":"keeping a byte-equivalent summary with both branch packets' Project Summary","predicate":"requires","quote":"> 프로젝트가 소유하는 project-wide decision SSOT다. 두 branch packet의 `Project Summary`와 byte-equivalent한 요약을 유지한다.","scope":"6.1 stable decision registry","source_surface":"SURF-798E20D490F0460B53F0","subject":"stable decision registry"},{"assertion_id":"PD-03","condition":"status active revision 1","line_end":146,"line_start":146,"modality":"must","object":"Measure->Break->Diagnose->Fix->Re-measure->Generalize as the lab completion loop","predicate":"uses","quote":"| `DEC-NPLUS1-PRESENTATION-PREP-LEARNING-001` | 1 | `learning` | Measure→Break→Diagnose→Fix→Re-measure→Generalize를 랩 완료 루프로 사용한다. | `active` | [[raw/project-notes/nplus1-presentation-prep]] | [[raw/branch-notes/experiment-nplus1-highlight-feed]] |","scope":"6.1 learning decision","source_surface":"SURF-798E20D490F0460B53F0","subject":"DEC-NPLUS1-PRESENTATION-PREP-LEARNING-001"},{"assertion_id":"PD-04","condition":"status active revision 1","line_end":147,"line_start":147,"modality":"must","object":"using ca-tmpl production substrate and isolating learning API/measurement paths via profile and sibling paths","predicate":"requires","quote":"| `DEC-NPLUS1-PRESENTATION-PREP-SUBSTRATE-001` | 1 | `substrate` | ca-tmpl production substrate를 사용하고 학습 API·측정 경로는 profile과 sibling 경로로 격리한다. | `active` | [[raw/project-notes/nplus1-presentation-prep]] | [[raw/branch-notes/experiment-nplus1-feed-api-replay]] |","scope":"6.1 substrate decision","source_surface":"SURF-798E20D490F0460B53F0","subject":"DEC-NPLUS1-PRESENTATION-PREP-SUBSTRATE-001"},{"assertion_id":"PD-05","condition":"status active revision 1","line_end":148,"line_start":148,"modality":"must_not","object":"promoting local/Testcontainers results to prod evidence (record as locally-verified only)","predicate":"forbids","quote":"| `DEC-NPLUS1-PRESENTATION-PREP-EVIDENCE-001` | 1 | `evidence` | local·Testcontainers 결과는 locally-verified로만 기록하고 prod evidence로 승격하지 않는다. | `active` | [[raw/project-notes/nplus1-presentation-prep]] | [[raw/official-docs/test-taxonomy-testcontainers-official]] |","scope":"6.1 evidence decision","source_surface":"SURF-798E20D490F0460B53F0","subject":"DEC-NPLUS1-PRESENTATION-PREP-EVIDENCE-001"},{"assertion_id":"PD-06","condition":"status active revision 1","line_end":149,"line_start":149,"modality":"must","object":"keeping same-store CQRS-lite as current scope and allowing full CQRS only after ca-tmpl contract escalation","predicate":"requires","quote":"| `DEC-NPLUS1-PRESENTATION-PREP-SCOPE-001` | 1 | `scope` | same-store CQRS-lite까지를 현재 범위로 두고 full CQRS는 ca-tmpl contract escalation 이후에만 허용한다. | `active` | [[raw/project-notes/nplus1-presentation-prep]] | [[raw/official-docs/cqrs-pattern-azure-architecture-center]] |","scope":"6.1 scope decision","source_surface":"SURF-798E20D490F0460B53F0","subject":"DEC-NPLUS1-PRESENTATION-PREP-SCOPE-001"},{"assertion_id":"RF-01","condition":"unconditional","line_end":104,"line_start":104,"modality":"observed","object":"POST /api/lab/feed:reset {count} request","predicate":"produces","quote":" Learner->>API: POST /api/lab/feed:reset {count}","scope":"4.1 sequence diagram","source_surface":"SURF-CE8F95D9C21D9C7A3A0D","subject":"Learner"},{"assertion_id":"RF-02","condition":"lab profile active and input valid","line_end":106,"line_start":106,"modality":"observed","object":"replacing marker-owned fixture in PostgreSQL","predicate":"delegates","quote":" API->>DB: replace marker-owned fixture","scope":"4.1 reset success path","source_surface":"SURF-CE8F95D9C21D9C7A3A0D","subject":"Lab API"},{"assertion_id":"RF-03","condition":"lab profile active and input valid","line_end":108,"line_start":108,"modality":"observed","object":"200 reset result","predicate":"returns","quote":" API-->>Learner: 200 reset result","scope":"4.1 reset success path","source_surface":"SURF-CE8F95D9C21D9C7A3A0D","subject":"Lab API"},{"assertion_id":"RF-04","condition":"GET /api/lab/feed under active lab profile","line_end":110,"line_start":110,"modality":"observed","object":"executing checkpoint strategy on Feed Module","predicate":"delegates","quote":" API->>Feed: execute checkpoint strategy","scope":"4.1 replay success path","source_surface":"SURF-CE8F95D9C21D9C7A3A0D","subject":"Lab API"},{"assertion_id":"RF-05","condition":"GET /api/lab/feed under active lab profile","line_end":111,"line_start":111,"modality":"observed","object":"SELECT feed rows on PostgreSQL","predicate":"delegates","quote":" Feed->>DB: SELECT feed rows","scope":"4.1 replay success path","source_surface":"SURF-CE8F95D9C21D9C7A3A0D","subject":"Feed Module"},{"assertion_id":"RF-06","condition":"GET /api/lab/feed under active lab profile","line_end":113,"line_start":113,"modality":"observed","object":"Hibernate Statistics statement/load counts (observation values)","predicate":"consumes","quote":" Feed->>Stats: read statement and load counts","scope":"4.1 replay success path","source_surface":"SURF-CE8F95D9C21D9C7A3A0D","subject":"Feed Module"},{"assertion_id":"RF-07","condition":"lab profile active and input valid","line_end":116,"line_start":116,"modality":"observed","object":"200 replay result","predicate":"returns","quote":" API-->>Learner: 200 replay result","scope":"4.1 replay success path","source_surface":"SURF-CE8F95D9C21D9C7A3A0D","subject":"Lab API"},{"assertion_id":"RF-08","condition":"lab profile inactive","line_end":118,"line_start":118,"modality":"observed","object":"404 route not registered","predicate":"has_failure_behavior","quote":" API-->>Learner: 404 route not registered","scope":"4.1 else branch","source_surface":"SURF-CE8F95D9C21D9C7A3A0D","subject":"Lab API"},{"assertion_id":"RF-09","condition":"input outside guard","line_end":120,"line_start":120,"modality":"observed","object":"400 VALIDATION_FAILED","predicate":"has_failure_behavior","quote":" API-->>Learner: 400 VALIDATION_FAILED","scope":"4.1 else branch","source_surface":"SURF-CE8F95D9C21D9C7A3A0D","subject":"Lab API"},{"assertion_id":"RF-10","condition":"success-path numbers differ per checkpoint","line_end":124,"line_start":124,"modality":"must_not","object":"generalizing success-path numbers into one fixed value","predicate":"forbids","quote":"성공 경로의 수치는 checkpoint마다 다르므로 프로젝트 문서가 하나의 고정 수치를 일반화하지 않는다. 관찰값은 각 branch의 Evidence 섹션에서 환경과 함께 판정한다.","scope":"4.1 sequence note","source_surface":"SURF-CE8F95D9C21D9C7A3A0D","subject":"project document"},{"assertion_id":"SQ-01","condition":"scenario","line_end":93,"line_start":93,"modality":"observed","object":"after checking out a checkpoint, reset lab fixture and record feed/DB/Hibernate observations","predicate":"produces","quote":"**시나리오**: 학습자가 checkpoint를 checkout한 뒤 lab fixture를 reset하고 feed·DB·Hibernate 관찰값을 기록한다.","scope":"4.1 scenario","source_surface":"SURF-52368FC4BAB31D3ECA88","subject":"learner"},{"assertion_id":"SQ-02","condition":"unconditional","line_end":104,"line_start":104,"modality":"observed","object":"POST /api/lab/feed:reset {count} request","predicate":"produces","quote":" Learner->>API: POST /api/lab/feed:reset {count}","scope":"4.1 sequence diagram","source_surface":"SURF-52368FC4BAB31D3ECA88","subject":"Learner"},{"assertion_id":"SQ-03","condition":"lab profile active and input valid","line_end":106,"line_start":106,"modality":"observed","object":"replacing marker-owned fixture in PostgreSQL","predicate":"delegates","quote":" API->>DB: replace marker-owned fixture","scope":"4.1 reset success path","source_surface":"SURF-52368FC4BAB31D3ECA88","subject":"Lab API"},{"assertion_id":"SQ-04","condition":"lab profile active and input valid","line_end":116,"line_start":116,"modality":"observed","object":"200 replay result","predicate":"returns","quote":" API-->>Learner: 200 replay result","scope":"4.1 replay success path","source_surface":"SURF-52368FC4BAB31D3ECA88","subject":"Lab API"},{"assertion_id":"SQ-05","condition":"lab profile inactive","line_end":118,"line_start":118,"modality":"observed","object":"404 route not registered","predicate":"has_failure_behavior","quote":" API-->>Learner: 404 route not registered","scope":"4.1 else branch","source_surface":"SURF-52368FC4BAB31D3ECA88","subject":"Lab API"},{"assertion_id":"SQ-06","condition":"input outside guard","line_end":120,"line_start":120,"modality":"observed","object":"400 VALIDATION_FAILED","predicate":"has_failure_behavior","quote":" API-->>Learner: 400 VALIDATION_FAILED","scope":"4.1 else branch","source_surface":"SURF-52368FC4BAB31D3ECA88","subject":"Lab API"},{"assertion_id":"SQ-07","condition":"success-path numbers differ per checkpoint","line_end":124,"line_start":124,"modality":"must_not","object":"generalizing success-path numbers into one fixed value (observations judged per branch Evidence with environment)","predicate":"forbids","quote":"성공 경로의 수치는 checkpoint마다 다르므로 프로젝트 문서가 하나의 고정 수치를 일반화하지 않는다. 관찰값은 각 branch의 Evidence 섹션에서 환경과 함께 판정한다.","scope":"4.1 sequence note","source_surface":"SURF-52368FC4BAB31D3ECA88","subject":"project document"},{"assertion_id":"WI-01","condition":"unconditional","line_end":165,"line_start":165,"modality":"must","object":"stable handoff SSOT for the two direct child branches","predicate":"owns","quote":"> 두 직접 자식 branch의 stable handoff SSOT다. Applies Decisions는 revision 1 project decisions 네 개를 모두 pin한다.","scope":"8.0 work item registry","source_surface":"SURF-007F7BAA8390CB387A41","subject":"8.0 execution plan"},{"assertion_id":"WI-02","condition":"unconditional","line_end":165,"line_start":165,"modality":"must","object":"pinning all four revision-1 project decisions","predicate":"requires","quote":"> 두 직접 자식 branch의 stable handoff SSOT다. Applies Decisions는 revision 1 project decisions 네 개를 모두 pin한다.","scope":"8.0 work item registry","source_surface":"SURF-007F7BAA8390CB387A41","subject":"Applies Decisions"},{"assertion_id":"WI-03","condition":"status in-progress","line_end":169,"line_start":169,"modality":"must","object":"branch experiment-nplus1-highlight-feed completion criteria (fix L2 ToOne EAGER isolation measurement, etc.)","predicate":"maps_to","quote":"| `WI-NPLUS1-PRESENTATION-PREP-001` | `experiment-nplus1-highlight-feed` | L2 ToOne EAGER 격리 측정값을 확정하고, L1~L6·L14~L16·Crown·L12의 증거 등급과 사용자 commit-range review를 본문 Closure에 반영한다. | `DEC-NPLUS1-PRESENTATION-PREP-LEARNING-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SUBSTRATE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-EVIDENCE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SCOPE-001@1` | - | `in-progress` |","scope":"8.0 work item WI-001","source_surface":"SURF-007F7BAA8390CB387A41","subject":"WI-NPLUS1-PRESENTATION-PREP-001"},{"assertion_id":"WI-04","condition":"Applies Decisions","line_end":169,"line_start":169,"modality":"must","object":"pinning all four project decisions at revision 1 (LEARNING/SUBSTRATE/EVIDENCE/SCOPE)","predicate":"requires","quote":"| `WI-NPLUS1-PRESENTATION-PREP-001` | `experiment-nplus1-highlight-feed` | L2 ToOne EAGER 격리 측정값을 확정하고, L1~L6·L14~L16·Crown·L12의 증거 등급과 사용자 commit-range review를 본문 Closure에 반영한다. | `DEC-NPLUS1-PRESENTATION-PREP-LEARNING-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SUBSTRATE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-EVIDENCE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SCOPE-001@1` | - | `in-progress` |","scope":"8.0 work item WI-001","source_surface":"SURF-007F7BAA8390CB387A41","subject":"WI-NPLUS1-PRESENTATION-PREP-001"},{"assertion_id":"WI-05","condition":"status in-progress","line_end":170,"line_start":170,"modality":"must","object":"branch experiment-nplus1-feed-api-replay completion criteria (fix 11 replay tags and guide mapping, etc.)","predicate":"maps_to","quote":"| `WI-NPLUS1-PRESENTATION-PREP-002` | `experiment-nplus1-feed-api-replay` | 11개 replay tag와 guide mapping을 고정하고, clean clone/worktree에서 Compose·HTTP·PostgreSQL smoke 및 full-check 상태를 재검증하며 lab profile의 deployment 비활성 증거를 기록한다. | `DEC-NPLUS1-PRESENTATION-PREP-LEARNING-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SUBSTRATE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-EVIDENCE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SCOPE-001@1` | `WI-NPLUS1-PRESENTATION-PREP-001` | `in-progress` |","scope":"8.0 work item WI-002","source_surface":"SURF-007F7BAA8390CB387A41","subject":"WI-NPLUS1-PRESENTATION-PREP-002"},{"assertion_id":"WI-06","condition":"Dependencies","line_end":170,"line_start":170,"modality":"must","object":"WI-NPLUS1-PRESENTATION-PREP-001","predicate":"runs_after","quote":"| `WI-NPLUS1-PRESENTATION-PREP-002` | `experiment-nplus1-feed-api-replay` | 11개 replay tag와 guide mapping을 고정하고, clean clone/worktree에서 Compose·HTTP·PostgreSQL smoke 및 full-check 상태를 재검증하며 lab profile의 deployment 비활성 증거를 기록한다. | `DEC-NPLUS1-PRESENTATION-PREP-LEARNING-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SUBSTRATE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-EVIDENCE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SCOPE-001@1` | `WI-NPLUS1-PRESENTATION-PREP-001` | `in-progress` |","scope":"8.0 work item WI-002","source_surface":"SURF-007F7BAA8390CB387A41","subject":"WI-NPLUS1-PRESENTATION-PREP-002"}],"candidate_manifest_sha256":"eb60a4a3cb675ee1fd64834fef47ef11bb4ca18b58cb1a86c50fdcb6cf3e0dd0","candidates":[{"assertion_a":"AC-06","assertion_b":"AC-08","candidate_id":"SEM-04BACE4AD77A28B39228","grouping_key":{"condition":"","predicate":"","scope":"","subject":""},"rule_ids":["C6"]},{"assertion_a":"AC-10","assertion_b":"IB-04","candidate_id":"SEM-9F5FF517F2F8AD7BDC4E","grouping_key":{"condition":"","predicate":"","scope":"","subject":""},"rule_ids":["C6"]},{"assertion_a":"PD-01","assertion_b":"PD-02","candidate_id":"SEM-73B75514A8C8FE8FE528","grouping_key":{"condition":"unconditional","predicate":"","scope":"6.1 stable decision registry","subject":""},"rule_ids":["C6"]},{"assertion_a":"PD-03","assertion_b":"PD-04","candidate_id":"SEM-8C89B22F334E8BB89D57","grouping_key":{"condition":"status active revision 1","predicate":"","scope":"","subject":""},"rule_ids":["C6"]},{"assertion_a":"PD-03","assertion_b":"PD-05","candidate_id":"SEM-60EEF30CE5075D8568FC","grouping_key":{"condition":"status active revision 1","predicate":"","scope":"","subject":""},"rule_ids":["C6"]},{"assertion_a":"PD-03","assertion_b":"PD-06","candidate_id":"SEM-5C97DAC8213B88FC3DDD","grouping_key":{"condition":"status active revision 1","predicate":"","scope":"","subject":""},"rule_ids":["C6"]},{"assertion_a":"PD-04","assertion_b":"PD-05","candidate_id":"SEM-9A4DC84082B081188134","grouping_key":{"condition":"status active revision 1","predicate":"","scope":"","subject":""},"rule_ids":["C6"]},{"assertion_a":"PD-04","assertion_b":"PD-06","candidate_id":"SEM-1F13753F47B0ECD2DF70","grouping_key":{"condition":"status active revision 1","predicate":"requires","scope":"","subject":""},"rule_ids":["C6"]},{"assertion_a":"PD-05","assertion_b":"PD-06","candidate_id":"SEM-5B9DBD7FA08B1EA4235A","grouping_key":{"condition":"status active revision 1","predicate":"","scope":"","subject":""},"rule_ids":["C6"]},{"assertion_a":"RF-01","assertion_b":"SQ-02","candidate_id":"SEM-425F99DFA6765DF4258E","grouping_key":{"condition":"unconditional","predicate":"produces","scope":"4.1 sequence diagram","subject":"Learner"},"rule_ids":["BASE","C6"]},{"assertion_a":"RF-02","assertion_b":"SQ-03","candidate_id":"SEM-23A326B1661D8E7F0090","grouping_key":{"condition":"lab profile active and input valid","predicate":"delegates","scope":"4.1 reset success path","subject":"Lab API"},"rule_ids":["BASE"]},{"assertion_a":"RF-03","assertion_b":"RF-07","candidate_id":"SEM-7CD4F49B1F3C7B4BDADD","grouping_key":{"condition":"lab profile active and input valid","predicate":"returns","scope":"","subject":"Lab API"},"rule_ids":["C5"]},{"assertion_a":"RF-03","assertion_b":"SQ-04","candidate_id":"SEM-FD2BA202780174928034","grouping_key":{"condition":"lab profile active and input valid","predicate":"returns","scope":"","subject":"Lab API"},"rule_ids":["C5"]},{"assertion_a":"RF-07","assertion_b":"SQ-04","candidate_id":"SEM-9B039184DD4A25E1D65C","grouping_key":{"condition":"lab profile active and input valid","predicate":"returns","scope":"4.1 replay success path","subject":"Lab API"},"rule_ids":["BASE","C5"]},{"assertion_a":"RF-08","assertion_b":"SQ-05","candidate_id":"SEM-EC5DCEC9C908C80B3EE4","grouping_key":{"condition":"lab profile inactive","predicate":"has_failure_behavior","scope":"4.1 else branch","subject":"Lab API"},"rule_ids":["BASE"]},{"assertion_a":"RF-09","assertion_b":"SQ-06","candidate_id":"SEM-A831A274DF5181F1DEBE","grouping_key":{"condition":"input outside guard","predicate":"has_failure_behavior","scope":"4.1 else branch","subject":"Lab API"},"rule_ids":["BASE"]},{"assertion_a":"RF-10","assertion_b":"SQ-07","candidate_id":"SEM-30CA51443D31EE090F80","grouping_key":{"condition":"success-path numbers differ per checkpoint","predicate":"forbids","scope":"4.1 sequence note","subject":"project document"},"rule_ids":["BASE"]},{"assertion_a":"WI-03","assertion_b":"WI-04","candidate_id":"SEM-04A2BAA71926DE7A6734","grouping_key":{"condition":"","predicate":"","scope":"8.0 work item WI-001","subject":"WI-NPLUS1-PRESENTATION-PREP-001"},"rule_ids":["C6","C7"]},{"assertion_a":"WI-03","assertion_b":"WI-05","candidate_id":"SEM-C0EA2DBBC34ED54EFF1B","grouping_key":{"condition":"status in-progress","predicate":"maps_to","scope":"","subject":""},"rule_ids":["C6","C7"]},{"assertion_a":"WI-03","assertion_b":"WI-06","candidate_id":"SEM-F6F9E9A99D9D91BEC4A6","grouping_key":{"condition":"","predicate":"","scope":"","subject":""},"rule_ids":["C6","C7"]},{"assertion_a":"WI-04","assertion_b":"WI-05","candidate_id":"SEM-92516635F3C8C4B9F869","grouping_key":{"condition":"","predicate":"","scope":"","subject":""},"rule_ids":["C6","C7"]},{"assertion_a":"WI-04","assertion_b":"WI-06","candidate_id":"SEM-7FAAB82E2B4C69D64C11","grouping_key":{"condition":"","predicate":"","scope":"","subject":""},"rule_ids":["C6","C7"]},{"assertion_a":"WI-05","assertion_b":"WI-06","candidate_id":"SEM-1EE2EAD2C198ADFB2F01","grouping_key":{"condition":"","predicate":"","scope":"8.0 work item WI-002","subject":"WI-NPLUS1-PRESENTATION-PREP-002"},"rule_ids":["C6","C7"]}],"coverage":{"assertions":46,"candidate_pairs":23,"eligible_surfaces":9,"processed_surfaces":9},"document_sha256":"727980b7c79b207853b4f637a813a049c441b8ff6e50c30e97bb1d32a023a7d0","explicit_blocking":[],"mode":"hub","ontology_sha256":"76d41a29233c830e1940ebb3244263e2b9bfb8dd6a01f2a1d1c51ce5a1b10468","output_schema":"semantic-audit-result/v1","schema_version":"semantic-verdict-request/v1","subject":"raw/project-notes/nplus1-presentation-prep.md"},"audit_request_sha256":"e7e34a6dbe98842ae508c4b15b94cd5a96970ae47d5d95b277550d46668bb507","audit_result":{"auditor":{"contract_version":"semantic-coherence/v1","model_id":"claude-opus-4-8","run_id":"a052e5a51d7585fe2"},"mode":"hub","request_sha256":"e7e34a6dbe98842ae508c4b15b94cd5a96970ae47d5d95b277550d46668bb507","schema_version":"semantic-audit-result/v1","subject":"raw/project-notes/nplus1-presentation-prep.md","verdicts":[{"candidate_id":"SEM-04BACE4AD77A28B39228","evidence_a":{"line_end":73,"line_start":73,"quote":"| PostgreSQL | fixture row와 SQL 실행 결과를 제공한다 | PostgreSQL, Docker Compose/Testcontainers | 없음 |"},"evidence_b":{"line_end":80,"line_start":80,"quote":"| Docker runtime | 로컬 PostgreSQL과 Compose/Testcontainers 실행 | local container API | DB 기반 replay와 integration evidence를 수집할 수 없다 |"},"proof_manifest":null,"rationale":"AC-06 (PostgreSQL produces fixture rows/SQL results, table 3.2) and AC-08 (on Docker runtime failure, DB-based replay/integration evidence cannot be collected, table 3.3) address different subjects, scopes, and predicates. AC-08 supplies a compatible failure-mode detail for the Docker-hosted DB without overriding what PostgreSQL provides. No shared contract property is assigned conflicting values.","verdict":"COMPLEMENTARY"},{"candidate_id":"SEM-9F5FF517F2F8AD7BDC4E","evidence_a":{"line_end":85,"line_start":85,"quote":"운영 배포 토폴로지는 이 프로젝트의 검증 범위가 아니다. `lab` profile이 운영 환경에서 비활성이라는 deployment-level 증거는 아직 `needs-confirmation`이다."},"evidence_b":{"line_end":157,"line_start":157,"quote":"- **보안**: 학습 reset/API는 `lab` profile에 한정하고, 정상 profile에서는 route/use case가 등록되지 않아야 한다."},"proof_manifest":null,"rationale":"IB-04 is the security design requirement (learning reset/API confined to lab profile, no route/use-case under normal profile). AC-10 is a distinct evidence-status note that deployment-level proof of production-inactivity is still needs-confirmation and out of this project's verification scope. These coexist without conflict; AC-10 does not deny the requirement, only marks its deployment-level evidence as pending, so no authority is disputed.","verdict":"COMPLEMENTARY"},{"candidate_id":"SEM-73B75514A8C8FE8FE528","evidence_a":{"line_end":142,"line_start":142,"quote":"> 프로젝트가 소유하는 project-wide decision SSOT다. 두 branch packet의 `Project Summary`와 byte-equivalent한 요약을 유지한다."},"evidence_b":{"line_end":142,"line_start":142,"quote":"> 프로젝트가 소유하는 project-wide decision SSOT다. 두 branch packet의 `Project Summary`와 byte-equivalent한 요약을 유지한다."},"proof_manifest":null,"rationale":"PD-01 (project note owns the project-wide decision SSOT) and PD-02 (that registry requires a byte-equivalent summary with both branch packets' Project Summary) are the ownership claim and its derived maintenance requirement from one sentence. The requirement supports the ownership without taking it over; no conflicting values.","verdict":"COMPLEMENTARY"},{"candidate_id":"SEM-8C89B22F334E8BB89D57","evidence_a":{"line_end":146,"line_start":146,"quote":"| `DEC-NPLUS1-PRESENTATION-PREP-LEARNING-001` | 1 | `learning` | Measure→Break→Diagnose→Fix→Re-measure→Generalize를 랩 완료 루프로 사용한다. | `active` | [[raw/project-notes/nplus1-presentation-prep]] | [[raw/branch-notes/experiment-nplus1-highlight-feed]] |"},"evidence_b":{"line_end":147,"line_start":147,"quote":"| `DEC-NPLUS1-PRESENTATION-PREP-SUBSTRATE-001` | 1 | `substrate` | ca-tmpl production substrate를 사용하고 학습 API·측정 경로는 profile과 sibling 경로로 격리한다. | `active` | [[raw/project-notes/nplus1-presentation-prep]] | [[raw/branch-notes/experiment-nplus1-feed-api-replay]] |"},"proof_manifest":null,"rationale":"PD-03 is the LEARNING decision (Measure-Break-Diagnose-Fix-Re-measure-Generalize loop) and PD-04 is the distinct SUBSTRATE decision (ca-tmpl substrate + profile/sibling isolation). Separate registry entries with different subjects and objects; they add compatible detail rather than contest the same property.","verdict":"COMPLEMENTARY"},{"candidate_id":"SEM-60EEF30CE5075D8568FC","evidence_a":{"line_end":146,"line_start":146,"quote":"| `DEC-NPLUS1-PRESENTATION-PREP-LEARNING-001` | 1 | `learning` | Measure→Break→Diagnose→Fix→Re-measure→Generalize를 랩 완료 루프로 사용한다. | `active` | [[raw/project-notes/nplus1-presentation-prep]] | [[raw/branch-notes/experiment-nplus1-highlight-feed]] |"},"evidence_b":{"line_end":148,"line_start":148,"quote":"| `DEC-NPLUS1-PRESENTATION-PREP-EVIDENCE-001` | 1 | `evidence` | local·Testcontainers 결과는 locally-verified로만 기록하고 prod evidence로 승격하지 않는다. | `active` | [[raw/project-notes/nplus1-presentation-prep]] | [[raw/official-docs/test-taxonomy-testcontainers-official]] |"},"proof_manifest":null,"rationale":"PD-03 (LEARNING decision, lab completion loop) and PD-05 (EVIDENCE decision forbidding promotion of local/Testcontainers results to prod evidence) are distinct decision-registry rows with different subjects and objects. They coexist without assigning conflicting values to any shared property.","verdict":"COMPLEMENTARY"},{"candidate_id":"SEM-5C97DAC8213B88FC3DDD","evidence_a":{"line_end":146,"line_start":146,"quote":"| `DEC-NPLUS1-PRESENTATION-PREP-LEARNING-001` | 1 | `learning` | Measure→Break→Diagnose→Fix→Re-measure→Generalize를 랩 완료 루프로 사용한다. | `active` | [[raw/project-notes/nplus1-presentation-prep]] | [[raw/branch-notes/experiment-nplus1-highlight-feed]] |"},"evidence_b":{"line_end":149,"line_start":149,"quote":"| `DEC-NPLUS1-PRESENTATION-PREP-SCOPE-001` | 1 | `scope` | same-store CQRS-lite까지를 현재 범위로 두고 full CQRS는 ca-tmpl contract escalation 이후에만 허용한다. | `active` | [[raw/project-notes/nplus1-presentation-prep]] | [[raw/official-docs/cqrs-pattern-azure-architecture-center]] |"},"proof_manifest":null,"rationale":"PD-03 (LEARNING decision) and PD-06 (SCOPE decision keeping same-store CQRS-lite as current scope) are separate decisions with different subjects. No overlap in the contract property each governs; they are compatible entries.","verdict":"COMPLEMENTARY"},{"candidate_id":"SEM-9A4DC84082B081188134","evidence_a":{"line_end":147,"line_start":147,"quote":"| `DEC-NPLUS1-PRESENTATION-PREP-SUBSTRATE-001` | 1 | `substrate` | ca-tmpl production substrate를 사용하고 학습 API·측정 경로는 profile과 sibling 경로로 격리한다. | `active` | [[raw/project-notes/nplus1-presentation-prep]] | [[raw/branch-notes/experiment-nplus1-feed-api-replay]] |"},"evidence_b":{"line_end":148,"line_start":148,"quote":"| `DEC-NPLUS1-PRESENTATION-PREP-EVIDENCE-001` | 1 | `evidence` | local·Testcontainers 결과는 locally-verified로만 기록하고 prod evidence로 승격하지 않는다. | `active` | [[raw/project-notes/nplus1-presentation-prep]] | [[raw/official-docs/test-taxonomy-testcontainers-official]] |"},"proof_manifest":null,"rationale":"PD-04 (SUBSTRATE decision) and PD-05 (EVIDENCE decision) are distinct registry rows governing different concerns (substrate/isolation vs evidence-grade promotion). They add compatible detail without contesting the same property.","verdict":"COMPLEMENTARY"},{"candidate_id":"SEM-1F13753F47B0ECD2DF70","evidence_a":{"line_end":147,"line_start":147,"quote":"| `DEC-NPLUS1-PRESENTATION-PREP-SUBSTRATE-001` | 1 | `substrate` | ca-tmpl production substrate를 사용하고 학습 API·측정 경로는 profile과 sibling 경로로 격리한다. | `active` | [[raw/project-notes/nplus1-presentation-prep]] | [[raw/branch-notes/experiment-nplus1-feed-api-replay]] |"},"evidence_b":{"line_end":149,"line_start":149,"quote":"| `DEC-NPLUS1-PRESENTATION-PREP-SCOPE-001` | 1 | `scope` | same-store CQRS-lite까지를 현재 범위로 두고 full CQRS는 ca-tmpl contract escalation 이후에만 허용한다. | `active` | [[raw/project-notes/nplus1-presentation-prep]] | [[raw/official-docs/cqrs-pattern-azure-architecture-center]] |"},"proof_manifest":null,"rationale":"PD-04 (SUBSTRATE decision requires ca-tmpl substrate + profile/sibling isolation) and PD-06 (SCOPE decision requires same-store CQRS-lite as current scope) share the requires predicate but on different subjects/objects. They are separate, compatible decisions; no mutually exclusive assignment.","verdict":"COMPLEMENTARY"},{"candidate_id":"SEM-5B9DBD7FA08B1EA4235A","evidence_a":{"line_end":148,"line_start":148,"quote":"| `DEC-NPLUS1-PRESENTATION-PREP-EVIDENCE-001` | 1 | `evidence` | local·Testcontainers 결과는 locally-verified로만 기록하고 prod evidence로 승격하지 않는다. | `active` | [[raw/project-notes/nplus1-presentation-prep]] | [[raw/official-docs/test-taxonomy-testcontainers-official]] |"},"evidence_b":{"line_end":149,"line_start":149,"quote":"| `DEC-NPLUS1-PRESENTATION-PREP-SCOPE-001` | 1 | `scope` | same-store CQRS-lite까지를 현재 범위로 두고 full CQRS는 ca-tmpl contract escalation 이후에만 허용한다. | `active` | [[raw/project-notes/nplus1-presentation-prep]] | [[raw/official-docs/cqrs-pattern-azure-architecture-center]] |"},"proof_manifest":null,"rationale":"PD-05 (EVIDENCE decision) and PD-06 (SCOPE decision) are distinct decision-registry rows governing different concerns. They coexist with no conflicting values on any shared contract property.","verdict":"COMPLEMENTARY"},{"candidate_id":"SEM-425F99DFA6765DF4258E","evidence_a":{"line_end":104,"line_start":104,"quote":" Learner->>API: POST /api/lab/feed:reset {count}"},"evidence_b":{"line_end":104,"line_start":104,"quote":" Learner->>API: POST /api/lab/feed:reset {count}"},"proof_manifest":null,"rationale":"RF-01 and SQ-02 carry byte-identical quotes ('Learner->>API: POST /api/lab/feed:reset {count}'), same subject Learner, same predicate produces, same condition and scope (4.1 sequence diagram), across two sequence-diagram surfaces that agree exactly. Agreeing restatement of the same value is consistent, not ambiguous.","verdict":"CONSISTENT"},{"candidate_id":"SEM-23A326B1661D8E7F0090","evidence_a":{"line_end":106,"line_start":106,"quote":" API->>DB: replace marker-owned fixture"},"evidence_b":{"line_end":106,"line_start":106,"quote":" API->>DB: replace marker-owned fixture"},"proof_manifest":null,"rationale":"RF-02 and SQ-03 carry byte-identical quotes ('API->>DB: replace marker-owned fixture'), same subject Lab API, predicate delegates, condition 'lab profile active and input valid', scope 4.1 reset success path. The two surfaces state the same value in agreement.","verdict":"CONSISTENT"},{"candidate_id":"SEM-7CD4F49B1F3C7B4BDADD","evidence_a":{"line_end":108,"line_start":108,"quote":" API-->>Learner: 200 reset result"},"evidence_b":{"line_end":116,"line_start":116,"quote":" API-->>Learner: 200 replay result"},"proof_manifest":null,"rationale":"RF-03 returns '200 reset result' in scope 4.1 reset success path; RF-07 returns '200 replay result' in scope 4.1 replay success path. These are two distinct interactions of the same sequence (reset flow vs replay flow), each returning 200 for its own operation. The differing scope makes them compatible stage details, not mutually exclusive values of one return.","verdict":"COMPLEMENTARY"},{"candidate_id":"SEM-FD2BA202780174928034","evidence_a":{"line_end":108,"line_start":108,"quote":" API-->>Learner: 200 reset result"},"evidence_b":{"line_end":116,"line_start":116,"quote":" API-->>Learner: 200 replay result"},"proof_manifest":null,"rationale":"RF-03 ('200 reset result', 4.1 reset success path) and SQ-04 ('200 replay result', 4.1 replay success path) describe two different Lab API responses for two different operations. Each supplies a compatible success-path detail scoped to its own flow; no conflicting value on a single return.","verdict":"COMPLEMENTARY"},{"candidate_id":"SEM-9B039184DD4A25E1D65C","evidence_a":{"line_end":116,"line_start":116,"quote":" API-->>Learner: 200 replay result"},"evidence_b":{"line_end":116,"line_start":116,"quote":" API-->>Learner: 200 replay result"},"proof_manifest":null,"rationale":"RF-07 and SQ-04 carry byte-identical quotes ('API-->>Learner: 200 replay result'), same subject Lab API, predicate returns, condition 'lab profile active and input valid', scope 4.1 replay success path. Two surfaces agreeing on the same value is consistent.","verdict":"CONSISTENT"},{"candidate_id":"SEM-EC5DCEC9C908C80B3EE4","evidence_a":{"line_end":118,"line_start":118,"quote":" API-->>Learner: 404 route not registered"},"evidence_b":{"line_end":118,"line_start":118,"quote":" API-->>Learner: 404 route not registered"},"proof_manifest":null,"rationale":"RF-08 and SQ-05 carry byte-identical quotes ('API-->>Learner: 404 route not registered'), same subject Lab API, predicate has_failure_behavior, condition 'lab profile inactive', scope 4.1 else branch. Agreeing restatement across surfaces.","verdict":"CONSISTENT"},{"candidate_id":"SEM-A831A274DF5181F1DEBE","evidence_a":{"line_end":120,"line_start":120,"quote":" API-->>Learner: 400 VALIDATION_FAILED"},"evidence_b":{"line_end":120,"line_start":120,"quote":" API-->>Learner: 400 VALIDATION_FAILED"},"proof_manifest":null,"rationale":"RF-09 and SQ-06 carry byte-identical quotes ('API-->>Learner: 400 VALIDATION_FAILED'), same subject Lab API, predicate has_failure_behavior, condition 'input outside guard', scope 4.1 else branch. The two surfaces state the same value in agreement.","verdict":"CONSISTENT"},{"candidate_id":"SEM-30CA51443D31EE090F80","evidence_a":{"line_end":124,"line_start":124,"quote":"성공 경로의 수치는 checkpoint마다 다르므로 프로젝트 문서가 하나의 고정 수치를 일반화하지 않는다. 관찰값은 각 branch의 Evidence 섹션에서 환경과 함께 판정한다."},"evidence_b":{"line_end":124,"line_start":124,"quote":"성공 경로의 수치는 checkpoint마다 다르므로 프로젝트 문서가 하나의 고정 수치를 일반화하지 않는다. 관찰값은 각 branch의 Evidence 섹션에서 환경과 함께 판정한다."},"proof_manifest":null,"rationale":"RF-10 and SQ-07 carry byte-identical quotes forbidding generalization of success-path numbers into one fixed value (observations judged per branch Evidence with environment), same subject project document, predicate forbids, condition and scope (4.1 sequence note). Agreeing restatement across two surfaces.","verdict":"CONSISTENT"},{"candidate_id":"SEM-04A2BAA71926DE7A6734","evidence_a":{"line_end":169,"line_start":169,"quote":"| `WI-NPLUS1-PRESENTATION-PREP-001` | `experiment-nplus1-highlight-feed` | L2 ToOne EAGER 격리 측정값을 확정하고, L1~L6·L14~L16·Crown·L12의 증거 등급과 사용자 commit-range review를 본문 Closure에 반영한다. | `DEC-NPLUS1-PRESENTATION-PREP-LEARNING-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SUBSTRATE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-EVIDENCE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SCOPE-001@1` | - | `in-progress` |"},"evidence_b":{"line_end":169,"line_start":169,"quote":"| `WI-NPLUS1-PRESENTATION-PREP-001` | `experiment-nplus1-highlight-feed` | L2 ToOne EAGER 격리 측정값을 확정하고, L1~L6·L14~L16·Crown·L12의 증거 등급과 사용자 commit-range review를 본문 Closure에 반영한다. | `DEC-NPLUS1-PRESENTATION-PREP-LEARNING-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SUBSTRATE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-EVIDENCE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SCOPE-001@1` | - | `in-progress` |"},"proof_manifest":null,"rationale":"WI-03 (WI-001 maps to branch experiment-nplus1-highlight-feed and its completion criteria) and WI-04 (WI-001 requires pinning all four revision-1 decisions) are the mapping and the decision-pin requirement of the same work-item row. The requirement complements the mapping without taking over its responsibility; no conflicting values.","verdict":"COMPLEMENTARY"},{"candidate_id":"SEM-C0EA2DBBC34ED54EFF1B","evidence_a":{"line_end":169,"line_start":169,"quote":"| `WI-NPLUS1-PRESENTATION-PREP-001` | `experiment-nplus1-highlight-feed` | L2 ToOne EAGER 격리 측정값을 확정하고, L1~L6·L14~L16·Crown·L12의 증거 등급과 사용자 commit-range review를 본문 Closure에 반영한다. | `DEC-NPLUS1-PRESENTATION-PREP-LEARNING-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SUBSTRATE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-EVIDENCE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SCOPE-001@1` | - | `in-progress` |"},"evidence_b":{"line_end":170,"line_start":170,"quote":"| `WI-NPLUS1-PRESENTATION-PREP-002` | `experiment-nplus1-feed-api-replay` | 11개 replay tag와 guide mapping을 고정하고, clean clone/worktree에서 Compose·HTTP·PostgreSQL smoke 및 full-check 상태를 재검증하며 lab profile의 deployment 비활성 증거를 기록한다. | `DEC-NPLUS1-PRESENTATION-PREP-LEARNING-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SUBSTRATE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-EVIDENCE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SCOPE-001@1` | `WI-NPLUS1-PRESENTATION-PREP-001` | `in-progress` |"},"proof_manifest":null,"rationale":"WI-03 maps WI-001 to experiment-nplus1-highlight-feed; WI-05 maps WI-002 to experiment-nplus1-feed-api-replay. Different work items and branches; the two mappings are compatible entries in the execution plan with no shared property in conflict.","verdict":"COMPLEMENTARY"},{"candidate_id":"SEM-F6F9E9A99D9D91BEC4A6","evidence_a":{"line_end":169,"line_start":169,"quote":"| `WI-NPLUS1-PRESENTATION-PREP-001` | `experiment-nplus1-highlight-feed` | L2 ToOne EAGER 격리 측정값을 확정하고, L1~L6·L14~L16·Crown·L12의 증거 등급과 사용자 commit-range review를 본문 Closure에 반영한다. | `DEC-NPLUS1-PRESENTATION-PREP-LEARNING-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SUBSTRATE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-EVIDENCE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SCOPE-001@1` | - | `in-progress` |"},"evidence_b":{"line_end":170,"line_start":170,"quote":"| `WI-NPLUS1-PRESENTATION-PREP-002` | `experiment-nplus1-feed-api-replay` | 11개 replay tag와 guide mapping을 고정하고, clean clone/worktree에서 Compose·HTTP·PostgreSQL smoke 및 full-check 상태를 재검증하며 lab profile의 deployment 비활성 증거를 기록한다. | `DEC-NPLUS1-PRESENTATION-PREP-LEARNING-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SUBSTRATE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-EVIDENCE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SCOPE-001@1` | `WI-NPLUS1-PRESENTATION-PREP-001` | `in-progress` |"},"proof_manifest":null,"rationale":"WI-03 describes WI-001's mapping/criteria; WI-06 records that WI-002 runs after WI-001 (dependency). Different subjects and predicates; WI-06 adds a compatible ordering detail without contesting WI-03's claim.","verdict":"COMPLEMENTARY"},{"candidate_id":"SEM-92516635F3C8C4B9F869","evidence_a":{"line_end":169,"line_start":169,"quote":"| `WI-NPLUS1-PRESENTATION-PREP-001` | `experiment-nplus1-highlight-feed` | L2 ToOne EAGER 격리 측정값을 확정하고, L1~L6·L14~L16·Crown·L12의 증거 등급과 사용자 commit-range review를 본문 Closure에 반영한다. | `DEC-NPLUS1-PRESENTATION-PREP-LEARNING-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SUBSTRATE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-EVIDENCE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SCOPE-001@1` | - | `in-progress` |"},"evidence_b":{"line_end":170,"line_start":170,"quote":"| `WI-NPLUS1-PRESENTATION-PREP-002` | `experiment-nplus1-feed-api-replay` | 11개 replay tag와 guide mapping을 고정하고, clean clone/worktree에서 Compose·HTTP·PostgreSQL smoke 및 full-check 상태를 재검증하며 lab profile의 deployment 비활성 증거를 기록한다. | `DEC-NPLUS1-PRESENTATION-PREP-LEARNING-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SUBSTRATE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-EVIDENCE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SCOPE-001@1` | `WI-NPLUS1-PRESENTATION-PREP-001` | `in-progress` |"},"proof_manifest":null,"rationale":"WI-04 (WI-001 requires pinning all four decisions) and WI-05 (WI-002 maps to experiment-nplus1-feed-api-replay) concern different work items. They coexist as separate execution-plan entries with no mutually exclusive assignment.","verdict":"COMPLEMENTARY"},{"candidate_id":"SEM-7FAAB82E2B4C69D64C11","evidence_a":{"line_end":169,"line_start":169,"quote":"| `WI-NPLUS1-PRESENTATION-PREP-001` | `experiment-nplus1-highlight-feed` | L2 ToOne EAGER 격리 측정값을 확정하고, L1~L6·L14~L16·Crown·L12의 증거 등급과 사용자 commit-range review를 본문 Closure에 반영한다. | `DEC-NPLUS1-PRESENTATION-PREP-LEARNING-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SUBSTRATE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-EVIDENCE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SCOPE-001@1` | - | `in-progress` |"},"evidence_b":{"line_end":170,"line_start":170,"quote":"| `WI-NPLUS1-PRESENTATION-PREP-002` | `experiment-nplus1-feed-api-replay` | 11개 replay tag와 guide mapping을 고정하고, clean clone/worktree에서 Compose·HTTP·PostgreSQL smoke 및 full-check 상태를 재검증하며 lab profile의 deployment 비활성 증거를 기록한다. | `DEC-NPLUS1-PRESENTATION-PREP-LEARNING-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SUBSTRATE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-EVIDENCE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SCOPE-001@1` | `WI-NPLUS1-PRESENTATION-PREP-001` | `in-progress` |"},"proof_manifest":null,"rationale":"WI-04 (WI-001 requires pinning four decisions) and WI-06 (WI-002 runs after WI-001) have different subjects and predicates. WI-06 supplies a compatible dependency detail without overriding WI-04; no conflict.","verdict":"COMPLEMENTARY"},{"candidate_id":"SEM-1EE2EAD2C198ADFB2F01","evidence_a":{"line_end":170,"line_start":170,"quote":"| `WI-NPLUS1-PRESENTATION-PREP-002` | `experiment-nplus1-feed-api-replay` | 11개 replay tag와 guide mapping을 고정하고, clean clone/worktree에서 Compose·HTTP·PostgreSQL smoke 및 full-check 상태를 재검증하며 lab profile의 deployment 비활성 증거를 기록한다. | `DEC-NPLUS1-PRESENTATION-PREP-LEARNING-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SUBSTRATE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-EVIDENCE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SCOPE-001@1` | `WI-NPLUS1-PRESENTATION-PREP-001` | `in-progress` |"},"evidence_b":{"line_end":170,"line_start":170,"quote":"| `WI-NPLUS1-PRESENTATION-PREP-002` | `experiment-nplus1-feed-api-replay` | 11개 replay tag와 guide mapping을 고정하고, clean clone/worktree에서 Compose·HTTP·PostgreSQL smoke 및 full-check 상태를 재검증하며 lab profile의 deployment 비활성 증거를 기록한다. | `DEC-NPLUS1-PRESENTATION-PREP-LEARNING-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SUBSTRATE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-EVIDENCE-001@1`, `DEC-NPLUS1-PRESENTATION-PREP-SCOPE-001@1` | `WI-NPLUS1-PRESENTATION-PREP-001` | `in-progress` |"},"proof_manifest":null,"rationale":"WI-05 (WI-002 maps to branch experiment-nplus1-feed-api-replay and its completion criteria) and WI-06 (WI-002 runs after WI-001) are the mapping and the dependency facet of the same work-item row. The ordering detail complements the mapping without taking over its responsibility.","verdict":"COMPLEMENTARY"}]},"auditor":{"contract_version":"semantic-coherence/v1","model_id":"claude-opus-4-8","run_id":"a052e5a51d7585fe2"},"auditor_contract_sha256":"1cbc67c27e5183a272687f635e3682a26d56785a1cf144da562eb7edd8f6cbce","coverage":{"candidate_pairs":23,"dropped_pairs":0,"eligible_surfaces":9,"processed_pairs":23,"processed_surfaces":9},"document_id":"3ef892ce3a733c11128ad27e2efaf7c60dde31622902065df97ccc7d0fa2ba05","document_sha256":"727980b7c79b207853b4f637a813a049c441b8ff6e50c30e97bb1d32a023a7d0","findings":{"blocking":0,"readiness_blocking":0,"verified":0},"mode":"hub","ontology_sha256":"5d601b96f0ca4d75eea89e9086c38e3acf2c4f0c7833846ef58c6a5719603126","policy_sha256":"0465598e9c1c4f2c3400ba51bf4719aa4890d60d56dc83304fb2224e660562b7","proof_manifest_sha256":"37517e5f3dc66819f61f5a7bb8ace1921282415f10551d2defa5c3eb0985b570","schema_version":"semantic-certificate/v1","semantic_audit_sha256":"bbfb325755383253e67272fa880ba4f962738a0a759a7ecff786ffddc4fc40e6","subject":"raw/project-notes/nplus1-presentation-prep.md","typed_contract_graph_sha256":"481fc3335a494c454ab13ad1d6a6ddccdec99aa8e083f6720ff8886bfa19cc89","verdict":"PASS"}
|