knowledge: 12 insights — fake IntersectionObserver under whileInView, concurrent optimistic PATCHes, buildConfigField as Java source, kotlinx coerceInputValues enum defaults, Kotlin implicit-receiver shadowing, self-hosted model load latency, alias-table contract tests, scrub vs timeScale (7 new pages, 1 amended, 77 plan-gaps retired) - #225
Open
choiyounggi wants to merge 2 commits into
Open
choiyounggi wants to merge 2 commits into
choiyounggi wants to merge 2 commits into
Conversation
… plan-gaps retired New: testing/mocking/fake-intersection-observer-for-viewport-animations, testing/quality/alias-table-contract-tests, frontend/state/concurrent-optimistic-updates, frontend/design/scrubbed-scroll-animations-under-reduced-motion, infrastructure/config/config-values-emitted-as-source-text, backend/java/kotlin/coerced-enum-defaults-in-kotlinx-serialization, backend/java/kotlin/implicit-receiver-shadowing-in-scope-functions, backend/common/llm/self-hosted-model-load-latency. Amended: infrastructure/agent-orchestration/checkable-claims-in-an-adopted-plan. Indexes: testing, frontend, infrastructure, backend, backend/java, INDEX.md; log.md +9. Report: .dev-loop/INGEST_REPORT.md (lint 361 pages / 0 findings / 0 violations).
This was referenced Sep 28, 2026
…to implicit-receiver-shadowing-in-scope-functions
This was referenced Sep 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Knowledge flush — 12 insight(s) + 77 plan-gap rows
Flush run id
20260928-082510-51682(inherited from the auto-flush hook that spawned this session viaDEV_LOOP_FLUSH_RUN_ID; step-0 acquire returnedalready-owned— a first attempt with a freshly generated id was correctly refused asheld). Claimed queue ids: 12 session-harvested insights (132b858e49df7e86,06c2127a32c50870,b144167a310dd409,f3aa894173b74a56,bb26106b019128e2,5cc5ca049c547407,0eaa58be75d0934d,21f8661fbab9c65f,b7c75b8ce0c9c759,1ad754070391a970,4dc7dd52cf801076,36d3d44f9cfe1f21) plus the 77 rows ofplan-gaps.jsonl(allsessionId: plan-gaps, harvested 2026-09-27).Outcome: 7 new pages, 1 amended page, 5 domain indexes + INDEX.md updated, no new category; 12 of 12 session candidates handled — 11 ingested into 7 new pages (three rows merged into one page, two rows merged into another), 1 merged into an existing page; 77 plan-gap rows dropped as project-specific (listed under Local-layer candidates). Lint after the edits:
node scripts/wiki-structure-checks.js wiki→ pages: 361, indexes: 13, findings: 0;node scripts/wiki-lint-prohibitions.js wiki→ directives: 81, compliant: 81, violations: 0, info: 1 (the info line is the pre-existingkeys-ahead-of-their-consumercell, present on the untouched baseline: 353 pages / 0 findings / 0 violations / info 1). Largest touched body:checkable-claims-in-an-adopted-plan100 lines; new pages 53–69 lines — all ≤ 120.Method: three read-only research agents fetched sources and quoted them; the coordinator then re-checked every URL cited below with
curl -sL -o /dev/null -w '%{http_code}'(all 200; the Ollama FAQ moved fromfaq.md(404) tofaq.mdx(200) and the page cites the live path), re-read the framer-motion 13.2.0observers.mjssource itself, re-extracted the AGPbuildConfigFieldsentence and the gradle-tipsBUILD_TIMEexample from the live HTML, and re-fetched the Ollama FAQ and the TkDodo article.git status --porcelainon the checkout was re-read after the agents returned: only the coordinator's own edits were present.Verified best-practice
1.
132b858e49df7e86+06c2127a32c50870+b144167a310dd409— a fake IntersectionObserver under motion/framer-motionwhileInView(→confidence: verified, new pagetesting-mocking-fake-intersection-observer-for-viewport-animations)Claims: (a) the wrapper caches one observer per (root,
JSON.stringify(options)) in a module-level WeakMap, so constructor-count probes read 0 from the second test in a file andobserve(element)is the countable event; (b) the per-element callback is resolved byobserverCallbacks.get(entry.target), so a fake entry withouttargetmakes the animation silently never fire while first-paint styles keep the suite green; (c) a timing suite needs an end-state positive control and a hardcoded-defaults mutation.Sources checked:
/Users/choeyeong-gi/Desktop/workspace/cover-letter/node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs(v13.2.0, read in full —observers = new WeakMap(),key = JSON.stringify(options),fireObserverCallback = (entry) => { const callback = observerCallbacks.get(entry.target); ... },rootInteresectionObserver.observe(element)); upstreamhttps://raw.githubusercontent.com/motiondivision/motion/main/packages/framer-motion/src/motion/features/viewport/observers.ts(200, same logic);https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry/target(200);https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/observe(200);https://vitest.dev/api/vi.html(200). No official motion doc on jsdom testing exists (agent checked motion.dev docs; the repo testswhileInViewunder Cypress, not jsdom) — the page does not claim one.Verification: source read + the session's own reproductions (constructor probe
expected +0 to be 1; element probe 1 vs mutant 4; target-less fake green for a hardcoded-transition mutant, withtarget2 red and run time 1 ms → 1018 ms). The third row (b144…, the reviewer's restatement with empty domain) carries no separate claim and is folded into the same page.2.
f3aa894173b74a56+bb26106b019128e2— concurrent optimistic per-field PATCH updates against one server-owned object (→confidence: verified, new pagefrontend-state-concurrent-optimistic-updates)Claim: per-call snapshot + whole-object replace-on-success lets one call's response or rollback overwrite another in-flight call's optimistic field; keep a confirmed snapshot plus an ordered pending-patch overlay, serialize the requests, set
confirmed = responseon success and drop only the failed patch on failure; with a query cache invalidate only whenisMutating() === 1.Sources checked:
https://tanstack.com/query/latest/docs/framework/react/guides/optimistic-updates(200 — cancels refetches "so they don't overwrite our optimistic update", "multiple mutations running at the same time", links the concurrent-updates guide as further reading);https://tkdodo.eu/blog/concurrent-optimistic-updates-in-react-query(200, TanStack Query maintainer — "If that refetch is faster than our second mutation, our UI will revert…",if (queryClient.isMutating() === 1) { queryClient.invalidateQueries(...) }). The Apollo optimistic-UI page was not examined; the page cites only the two above.Verification: sources + field test (4 overlap tests with
CompletableDeferredgates red on the snapshot version, green after; auditor reproduced the red; 131/0). The two rows are the same fix seen from the implementer (mobile) and the reviewer (frontend); one page,applies_to: [general, react, android].3.
5cc5ca049c547407— AGPbuildConfigFieldwrites the value as Java source (→confidence: verified, new pageinfrastructure-config-config-values-emitted-as-source-text)Claim: the value argument is emitted verbatim into
BuildConfig.java, so user/env input must be escaped (\then") and a hostile-character compile probe belongs in the verification step because javac fails before any runtime validation.Sources checked:
https://developer.android.com/reference/tools/gradle-api/8.7/com/android/build/api/dsl/VariantDimension(200; live text re-extracted: "The field is generated as: = ; This means each of these must have valid Java content. If the type is a String, then the value should include quotes.");https://developer.android.com/build/gradle-tips(200; live examplebuildConfigField("String", "BUILD_TIME", "\"${minutesSinceEpoch}\"")). The escaping requirement and theunclosed string literalerror are consequences of the documented "valid Java content" rule plus the session's javac 17 reproduction (exit 1 vs control exit 0) — the page states them as such.4.
0eaa58be75d0934d— kotlinx.serializationcoerceInputValuesand enum defaults (→confidence: verified, new pagebackend-java-kotlin-coerced-enum-defaults-in-kotlinx-serialization)Claim: with
coerceInputValues = true, an unknown enum value on a property with a default is silently replaced by the default; a required enum property (no default) still throws.Sources checked:
https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/json.md(200; raw text re-read: supported invalid values are "nullinputs for non-nullable types" and "unknown values for enums"; "If value is missing, it is replaced either with a default property value if it exists, or with anullif explicitNulls flag is set tofalseand a property is nullable (for enums)"; theBrushexample). Field test: adding= TripPlaceCategory.ETCmadetripPlace_unknownCategory_throwsfail (9 tests, 1 failed); removing it restored green.5.
21f8661fbab9c65f— a top-level fixture helper shadowed by a receiver member insideapply {}(→confidence: verified, new pagebackend-java-kotlin-implicit-receiver-shadowing-in-scope-functions)Claim: inside a lambda with receiver an unqualified call resolves to the implicit receiver's member before a same-named top-level function.
Sources checked:
https://kotlinlang.org/spec/overload-resolution.html(200; "Call without an explicit receiver": local callables → "overload candidate sets for each pair of implicit receivers … in order of the receiver priority" → "top-level non-extension functions named f");https://kotlinlang.org/docs/scope-functions.html(200;apply/run/with=this,also/let=it). No compiler inspection for this shadowing was found (the agent reports "none found", not "confirmed absent"); the page says the member call "compiles cleanly", which the field evidence shows. Field test: 3 failures with the fake'sNoSuchElementException→ rename totripFixture→ 13 pass.6.
b7c75b8ce0c9c759— an adopt-only plan that freezes test bodies and forbids new failures (→confidence: field-testedfor this addition; merged into the existingverifiedpageinfrastructure-agent-orchestration-checkable-claims-in-an-adopted-plan)Claim: only a run reveals whether the plan's rule flips an existing assertion — apply one production slice, run the whole suite, diff the failing set against the baseline, revert, report the gap.
Sources checked:
http://www.extremeprogramming.org/rules/spike.html(200 on http only; "A spike solution is a very simple program to explore potential solutions … expect to throw it away") supports the throwaway-probe principle; the compound procedure is field evidence only (seagrass t174: failures 1→2, the new one attest_repo_policy.py:221inside a frozen class; reverted, tree clean). The page'ssources:list is unchanged (the XP page was not added because the addition is recorded as field evidence, not as a sourced directive); the new material is a trigger sentence, one Do-table row, one edge row and one field-evidence line.7.
1ad754070391a970— first request to a self-hosted model server after idle (→confidence: verifiedfor the keep-alive mechanics, new pagebackend-common-llm-self-hosted-model-load-latency)Claim: the first call after idle pays the model's disk load, which exceeds a 10 s SDK default timeout for a multi-GB model; raise the timeout, warm up before measuring, set keep-alive longer than the caller's idle interval.
Sources checked:
https://github.com/ollama/ollama/blob/main/docs/faq.mdx(200; re-fetched: "By default models are kept in memory for 5 minutes before being unloaded";keep_aliveaccepts duration strings, seconds, negative numbers,0; "Thekeep_aliveAPI parameter … will override theOLLAMA_KEEP_ALIVEsetting");https://github.com/ollama/ollama/blob/main/docs/api.md(200;keep_alive"default: 5m"). The candidate named the server "ollaya" (OLLAYA_KEEP_ALIVE) and the client "typesafe-sdk": the research agent found only GitHub repos created 2026-09-17 → 2026-09-27 with copy-pasted descriptions across unrelated accounts and flagged them as not a genuine established project. The page names neither; it describes "Ollama or a server with the same keep-alive model" and cites Ollama's docs, and the field evidence (31334 ms ERROR … Request timed out (timeout=10.0); warm-up 1588 ms; p50 786 ms; "4 minutes from now") is recorded brand-free. The load-time-vs-timeout numbers are field evidence, not a documented figure.8.
4dc7dd52cf801076— row-for-row test of a compatibility alias table (→confidence: field-tested, new pagetesting-quality-alias-table-contract-tests)Claim: assert every alias from the design document's mapping with a size assertion and prove detection by retargeting one alias; a 4-of-18 spot check lets wrong forwards through.
Sources checked:
https://pitest.org/quickstart/basic_concepts/(200; killed mutant = a test failed),https://testing.googleblog.com/2021/04/mutation-testing.html(200),https://junit.org/junit5/docs/current/user-guide/(200; parameterized tests). These support the mechanics (table-driven + mutation), not the specific alias-table rule, hence field-tested. Field evidence: t1-design-tokens r1 → 20-row table with size check; r2 reviewer retargetedButtonMdand exactly that test failed.9.
36d3d44f9cfe1f21— ascrubScrollTrigger is outsideglobalTimeline.timeScale()'s reach (→confidence: verified, new pagefrontend-design-scrubbed-scroll-animations-under-reduced-motion)Claim: scrub sets the tween's progress from scroll position, so a global time-scale reduced-motion switch never affects it; read the preference where the effect is created, skip the trigger, set the final state.
Sources checked:
https://gsap.com/docs/v3/Plugins/ScrollTrigger/(200; scrub "Links the progress of the animation directly to the scrollbar so it acts like a scrubber"),https://gsap.com/docs/v3/GSAP/Timeline/timeScale()/(200; "Factor that's used to scale time in the animation"),https://gsap.com/docs/v3/GSAP/gsap.matchMedia()/(200; "Accessible animations with prefers-reduced-motion" section). The docs do not state the scrub/timeScale interaction in one sentence; it follows from the two definitions, and the page says so ("the engine setsprogress()from scroll position instead of playing the tween, so a clock factor … has nothing to scale"). Field evidence: cover-letterDurationMeter.tsx, caught by the integration reviewer.Existing-layer check
Pages read: infrastructure-agent-orchestration-checkable-claims-in-an-adopted-plan, infrastructure-agent-orchestration-worker-reported-plan-contradiction, testing-quality-spec-artifact-checks, testing-quality-tests-that-cannot-fail, backend-common-reliability-timeouts-and-retries, backend-common-llm-context-window-budget, frontend-state-client-vs-server-state, testing-quality-mutation-harness-file-custody, testing-quality-value-preserving-refactor-assertions
Domain indexes read in full: testing, mobile, frontend, infrastructure, backend, backend/java.
wiki_search(k=5) was run once per candidate unit (9 queries); no hit described the same trigger for any unit. Top hits considered and why they are not merge targets:testing-e2e-e2e-stability(entry animations under Playwright auto-wait — E2E, not a jsdom fake),frontend-data-fetching-infinite-scroll(production use of IntersectionObserver on a sentinel). New page;related:to tests-that-cannot-fail, what-to-mock, async-testing, infinite-scroll.frontend-state-client-vs-server-state(where server state lives — read in full, no optimistic-update guidance),databases-selection-relational-jsonb-vs-document-store(server-side concurrent JSONB writes),mobile-lifecycle-process-death-and-state. New page;related:to client-vs-server-state, race-conditions, async-ui-states, mobile-offline-first-sync.backend-java-kotlin-compiler-daemon-heap-pressure,platforms-shells-option-like-argument-values(text re-parsed as source — the closest analogue, linked asrelated:),backend-common-change-impact-compiler-as-call-site-inventory. New page under infrastructure/config (existing category: "per-environment config");related:to environment-config.backend-java-kotlin-frameworks-and-jpa(Kotlin defaults vs DDL — a different default trap, linked),testing-quality-schema-additions-under-a-golden-gate(enum mutation in a golden gate, linked),backend-java-kotlin-null-safety-interop(linked). New page under backend/java/kotlin.backend-java-kotlin-null-safety-interop,testing-mocking-extracted-method-this-binding(a JSthis-binding trap, different mechanism),testing-quality-value-preserving-refactor-assertions. New page under backend/java/kotlin;related:to test-data-and-isolation, what-to-mock, null-safety-interop.infrastructure-agent-orchestration-checkable-claims-in-an-adopted-plan(read in full, 94 body lines) andinfrastructure-agent-orchestration-worker-reported-plan-contradiction(read in full, 64 lines — governs a contradiction a worker has already reported between a design doc and step files, with the same "run it and read the suite" mechanism). The new case is a rule-vs-rule contradiction discovered before implementation, which is the adopting-side page's scope → merged into checkable-claims (trigger sentence, Do row, edge row, field-evidence line; 94 → 100 body lines); its index load-when line extended. No conflict with either page.backend-common-llm-context-window-budget(read in full — repointing at a self-hosted server and the 400 context-window failure; different failure, linked),backend-common-reliability-timeouts-and-retries(read — generic timeout/retry policy, linked),platforms-processes-non-interactive-cli-invocation. New page under backend/common/llm.testing-quality-spec-artifact-checks(read in full — coverage vs validity checks on a Markdown/spec artifact; the alias table is a code contract, so a new page linked both ways),checkable-claimsstep 2 (alias-name collisions, linked),testing-quality-value-preserving-refactor-assertions. New page under testing/quality.frontend-data-fetching-infinite-scroll,testing-e2e-e2e-stability; frontend/design has no motion page and the domain index's route line already names "motion styling". New page under frontend/design;related:to effects-usage (scroll/animation-library effects), accessibility-interactive-elements, and the new fake-IntersectionObserver page.Conflicts flagged: none. Related links: the new pages link outward to the existing pages named above; the existing pages'
related:lists were left unchanged so this PR's footprint on existing pages stays at the one merged page plus index rows — back-links are for the owner to add at review if wanted.Open-PR check
gh pr list --repo choiyounggi/dev-loop --state open --search "head:knowledge/"→ one open head: #223knowledge/choiyounggi-20260927-220735(15 insights: gitignore re-inclusion, union-merge reassembly, hook input fields, silenced-write redirection, jq unicode escape, EPIPE write ordering, fake-server forward-before-reply, shared-helper invariant; 100 plan-gaps retired). Fetched and diffedorigin/main...origin/knowledge/choiyounggi-20260927-220735 -- wiki/ INDEX.md(53 files): its new pages areplatforms/tools/hook-input-fields-from-the-reference,platforms/tools/unicode-escape-in-a-jq-regex,testing/mocking/fake-server-forward-before-reply,testing/quality/cross-component-invariant-via-shared-helperand others in platforms/qa/security; its 100 plan-gap rows are a different, earlier set (harvested 2026-09-21 → 2026-09-23).fake-server-forward-before-replyis a network fake's reply ordering, not a DOM observer fakeqa/process/completion-claimsandtesting/flaky/diagnosing-flaky-tests, not the adopted-plan pagescross-component-invariant-via-shared-helperis a shared test helper across components, not an alias mappingRouting decision
132b…,06c2…,b144…fake-intersection-observer-for-viewport-animations(new)f3aa…,bb26…concurrent-optimistic-updates(new;applies_to: [general, react, android])5cc5…config-values-emitted-as-source-text(new)0eaa…coerced-enum-defaults-in-kotlinx-serialization(new)21f8…implicit-receiver-shadowing-in-scope-functions(new)related:b7c7…checkable-claims-in-an-adopted-plan(amended)1ad7…self-hosted-model-load-latency(new)4dc7…alias-table-contract-tests(new)36d3…scrubbed-scroll-animations-under-reduced-motion(new)No new category. INDEX.md route lines extended for frontend, backend, infrastructure and testing so the new triggers are routable from the root.
Local-layer candidates
All 77
plan-gaps.jsonlrows are wiki-plan Phase B decisions of the form "Planning tN: deciding X (no owning wiki page)" whose directives name one repository's own files, symbols, values or routes (TripApiRetrofit paths,LinklyRadiusnumeric values,.channel-view__sideCSS,RFC_ROUTESregistration,CLEANUP_REAP_TIMEOUT,network_security_config.xmlplacement, …). Each is a design record for that repo, not a reusable trigger; the previous flushes (#188, #213, #223) retired the same class the same way. Retired asdrop: project-specific plan-gap. Two rows sit next to general pages this PR adds —f5966b045f97bab5(the per-fileFakeIntersectionObserverstub decision, whose general lesson is nowtesting-mocking-fake-intersection-observer-for-viewport-animations) and71ab26670152561c(required enum fields with no default, whose general lesson isbackend-java-kotlin-coerced-enum-defaults-in-kotlinx-serialization) — the rows themselves remain project records. Targets below use the closest bundled category; runwiki-ingestinside the named project to land any of them.d9055dd9c9c028d8astag dispatch withoutanywiki-local/frontend/design/t1-motion-stagger-deciding-as-tag-dispatch-without-any.mdfd03be655070a0fffrompreset valueswiki-local/frontend/design/t1-motion-stagger-deciding-from-preset-values.mdf5966b045f97bab5wiki-local/frontend/design/t1-motion-stagger-deciding-test-intersectionobserver-stub.md474303a727bf72b2wiki-local/mobile/networking/t3-trip-data-deciding-http-boundary-longitude-field-name.md7bbccf6326ea06d4TripApiRetrofit path/method tablewiki-local/mobile/networking/t3-trip-data-deciding-tripapi-retrofit-path-method-table.md71ab26670152561ccategory/modefield typeswiki-local/mobile/networking/t3-trip-data-deciding-category-mode-field-types.md92a1b76824103c14UpdateTripRequest,UpdateTripPlaceRequest,UpdateItineraryItemRequest)wiki-local/mobile/networking/t3-trip-data-deciding-update-request-body-encoding-updatetriprequest-u.md4d2ac156ca9d688bTripViewModelstructurewiki-local/mobile/networking/t3-trip-data-deciding-tripviewmodel-structure.md0ec3ed5e659f62a3TripViewModeldraft/form ownershipwiki-local/mobile/networking/t3-trip-data-deciding-tripviewmodel-draft-form-ownership.md32963894c999e03dTripItineraryPlanner.applyOptimizedOrderwiki-local/mobile/networking/t3-trip-data-deciding-tripitineraryplanner-applyoptimizedorder.mdc6d694c43e1adb93updateItineraryItem(16thTripApiroute)wiki-local/mobile/networking/t3-trip-data-deciding-updateitineraryitem-16th-tripapi-route.mde4f4db6b5e9f0203TripViewModeltest doubleswiki-local/mobile/networking/t3-trip-data-deciding-tripviewmodel-test-doubles.md6432f4e1b6eaf63fwiki-local/mobile/presentation/t1-design-tokens-deciding-linklyradius-exact-values.mde72e9fbd49d08484wiki-local/mobile/presentation/t1-design-tokens-deciding-color-palette-source-of-truth.md65e9b90e50e73d58wiki-local/mobile/presentation/t1-design-tokens-deciding-linklytextstyle-representation.mdd9cf4fd545e20d29wiki-local/mobile/presentation/t1-design-tokens-deciding-legacy-typography-name-to-new-role-mapping.md804b55b42f7e9ebawiki-local/mobile/presentation/t1-design-tokens-deciding-linklyshadow-to-linklyelevation-forwarding.md6c0445bafa4c6bc8wiki-local/mobile/presentation/t1-design-tokens-deciding-legacy-linklycolor-alias-targets.md4307412885ab1516wiki-local/mobile/presentation/t1-design-tokens-deciding-linklyeventlistcard-linklyphotogridcell-scop.mdd2169dcb8d26bd41wiki-local/mobile/presentation/t1-design-tokens-deciding-linklytabbar-linklychatbubble-structural-red.md5e3efbda6d43b7b9path-passthrough regression scopewiki-local/backend/common/api-design/t176-http-retry-passthrough-deciding-path-passthrough-regression-scope.md885247c1b820b2d6breaker-reaching-the-driver proofwiki-local/backend/common/api-design/t176-http-retry-passthrough-deciding-breaker-reaching-the-driver-proof.md7dba3e48db50231ewiki-local/backend/common/api-design/t176-http-retry-passthrough-deciding-changelog-entry.mdb887a52ab301fa4fwiki-local/backend/common/api-design/t174-inworkflow-write-state-deciding-order-aware-seed-rule.md6534fb12c57590feinterp.pychangewiki-local/backend/common/api-design/t174-inworkflow-write-state-deciding-no-interp-py-change.md046386ad11f734ae_response_schemasources acreate ... asalias's entity shapewiki-local/backend/common/api-design/t173-openapi-create-as-deciding-where-response-schema-sources-a-create.md39272f0714d7ecb0wiki-local/backend/common/api-design/t173-openapi-create-as-deciding-lookup-order-when-a-binding-name-could.md78525c7bad510519wiki-local/mobile/networking/t4-notifications-presence-deciding-chat-viewing-presence-formula.mddfc98d8efc0f1c7ewiki-local/mobile/networking/t4-notifications-presence-deciding-chat-tab-active-signal-delivery-in.md58a09c1f2e2840bcwiki-local/mobile/networking/t4-notifications-presence-deciding-ping-payload-shape.md605d0efe38edbf26wiki-local/mobile/networking/t4-notifications-presence-deciding-presence-emission-while-disconnecte.md1dd089d4720913dewiki-local/mobile/networking/t4-notifications-presence-deciding-notificationpreference-update-dto-f.mdc7c574450273338bwiki-local/mobile/networking/t4-notifications-presence-deciding-patch-partial-body-encoding.md42c6515bc2a60c93wiki-local/mobile/networking/t4-notifications-presence-deciding-reminder-offset-clamping.mdefdba02159ef416bwiki-local/mobile/networking/t4-notifications-presence-deciding-reminder-offset-ui-component.mde7a83bd5532a5f87wiki-local/mobile/networking/t4-notifications-presence-deciding-settingsviewmodel-approot-wiring.md800330f7e8da269dmigratelocates a candidate row whose scan-time key derivation (row_key(entity_id, row)) misses on re-wiki-local/backend/common/api-design/t179-migrate-silent-noop-deciding-how-migrate-locates-a-candidate-row.mdf19196c74d13965bwiki-local/backend/common/api-design/t179-migrate-silent-noop-deciding-what-happens-when-a-run-scans-1-cand.md878d659c451b5fb0run_migration's success-path return dict may grow a new key (e.g."failed") to carry the D2/D3 sigwiki-local/backend/common/api-design/t179-migrate-silent-noop-deciding-whether-run-migration-s-success-path.mddfa0c5396f050af4docs/migration.mdmust state about the new report/exit-code contract (covers R6)wiki-local/backend/common/api-design/t179-migrate-silent-noop-deciding-what-docs-migration-md-must-state-ab.mdbd37a58d7ac48356wiki-local/mobile/presentation/t1-design-tokens-deciding-legacy-typography-name-to-new-role-mapping-a.md2cb5c98088b7a301wiki-local/mobile/presentation/t1-design-tokens-deciding-linklyduogradient-representation-location-an.md8680024116d50e24wiki-local/mobile/presentation/t1-design-tokens-deciding-buttons-kt-inputs-kt-surfaces-kt-scope-of-ch.mdefbfa0706d867da3wiki-local/frontend/design/t3-experience-motion-deciding-header-typing-mechanism-for-the-code-fra.md48d686795a34b696wiki-local/frontend/design/t3-experience-motion-deciding-duration-ts-signature-and-month-counting.mde1db48ea4f707044wiki-local/frontend/design/t3-experience-motion-deciding-count-up-rendering-mechanism.md145207ef8dd603b2wiki-local/frontend/design/t3-experience-motion-deciding-achievements-techstack-stagger-wiring.md2848a10a1f784497wiki-local/frontend/design/t3-experience-motion-deciding-final-verification-floor-for-this-featur.md9797dcb4361c60c6StaggerGroup/StaggerItemforwiki-local/frontend/design/t2-timeline-motion-deciding-general-rule-apply-everywhere-in-this-plan.mdb877422f1b14561awiki-local/frontend/design/t2-timeline-motion-deciding-card-slide-in-composition.md025f1a9158912f69wiki-local/frontend/design/t2-timeline-motion-deciding-marker-point-lighting-trigger-config-produ.md1f1ac6e6e2c4f36awiki-local/frontend/design/t2-timeline-motion-deciding-year-header-active-emphasis-trigger-config.mdd64287dabbd1060euseGsap's callbackwiki-local/frontend/design/t2-timeline-motion-deciding-scoped-element-lookup-inside-usegsap-s-cal.md90f4f001067283fewiki-local/frontend/design/t2-timeline-motion-deciding-marker-color-scale-swap-mechanism.md4647e4ab8121308ewiki-local/frontend/design/t2-timeline-motion-deciding-year-header-color-swap-mechanism.mdd20621305ffcbbcawiki-local/frontend/design/t2-timeline-motion-deciding-data-attribute-starting-classname-placemen.md7e69b6d5fab0c5dbTimelineItemCard.tsxtech-chip stagger implementationwiki-local/frontend/design/t2-timeline-motion-deciding-timelineitemcard-tsx-tech-chip-stagger-imp.md68c498f5d1dd1db0@/components/motiontest mock shape (pinned, verbatim code in the fenced block below the table)wiki-local/frontend/design/t2-timeline-motion-deciding-components-motion-test-mock-shape-pinned-v.mdc26fecad5c0c4dfewiki-local/infrastructure/config/t2-dev-env-deciding-debug-only-cleartext-policy-mechanism.md2723ba233882356eAppEnvironmentAPI summarywiki-local/infrastructure/config/t2-dev-env-deciding-recording-the-final-appenvironment-api-summary.md9f05d1a613da06c7policy.timeoutwiki-local/backend/common/reliability/t2-cmdexec-wait-deciding-the-reap-bound-value-and-why-it-is-fixed-not.md8e03f7520152a155emit/publishwiki-local/backend/common/api-design/t178-emit-with-payload-deciding-grammar-surface-for-emit-publish.mddd481d0ccec0139cwiki-local/backend/common/api-design/t178-emit-with-payload-deciding-duplicate-mapped-field-names.md36c365e42c22749dwiki-local/backend/common/api-design/t178-emit-with-payload-deciding-runtime-payload-construction.mddd9a1de6d841daf4speccompatibilitywiki-local/backend/common/api-design/t178-emit-with-payload-deciding-spec-compatibility.mdb7da7c25be38b089StepLineword-cap driftwiki-local/backend/common/api-design/t178-emit-with-payload-deciding-rfc-0002-stepline-word-cap-drift.mdd2ffe8bb9a03075dwiki-local/backend/common/api-design/t178-emit-with-payload-deciding-rfc-0049-authoring-shape.mdc46b93213729f22dwiki-local/backend/common/api-design/t178-emit-with-payload-deciding-rfc-routes-registration.md97e35ec0c3f11450.channel-view__sidegrows with content)wiki-local/frontend/design/t4-fe-layout-deciding-fix-for-issue-29-suspect-1-channel-view-side-gro.md0cd3fbeb251a807f.thread-panel__listgrows instead of scrolling)wiki-local/frontend/design/t4-fe-layout-deciding-fix-for-issue-29-suspect-2-thread-panel-list-gro.md32d68342d573a02b.new-task-modal__project-listgrows with project count)wiki-local/frontend/design/t4-fe-layout-deciding-bound-for-issue-27-new-task-modal-project-list-g.md7df0d15a106696c6RosterPanelstays untouchedwiki-local/frontend/design/t4-fe-layout-deciding-bound-for-issue-27-roster-pushed-off-screen-scop.mdb5e8294d3ee94b9c.new-task-modal's whole-modaloverflow-y: auto(new-task-modal.css:10-18) stayswiki-local/frontend/design/t4-fe-layout-deciding-whether-new-task-modal-s-whole-modal-overflow-y.mda35af19defb7a81awiki-local/frontend/design/t4-fe-layout-deciding-whether-any-tsx-change-is-needed.md7f0ce70b8c79f8d5wiki-local/frontend/design/t4-fe-layout-deciding-baseline-command-standardized-for-gate-a-ci-pari.md5aad2d91e92d5e4enpm run buildstays green) is verified as its own gate, separate from vitestwiki-local/frontend/design/t4-fe-layout-deciding-where-when-r6-npm-run-build-stays-green-is-verif.mdbc42469f7b56e958wiki-local/infrastructure/agent-orchestration/t5-agent-toolwrite-deciding-piharness-opencodeharness-behaviour.md