Skip to content
Open
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
382 changes: 339 additions & 43 deletions .dev-loop/INGEST_REPORT.md

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions log.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,5 @@ Append-only. Format: `## [YYYY-MM-DD] <ingest|revise|lint|gap|contradiction|drif
## [2026-08-06] revise | Union-merged amendments from the same 15 PRs into 24 existing pages (largest: tests-that-cannot-fail — 7 PRs: per-assertion mutation granularity, restore-mechanism-by-commit-state, suite-total-drop detection; portable-shell-scripts — 8 PRs: POSIX inline set-- reordering, ${VAR:-} vs ${VAR-} colon semantics, quote-by-what-the-text-is; test-data-and-isolation — 6 PRs: env-derived write paths, absent-variable cases, exec-bit fixtures, leak attribution; change-impact/call-site-enumeration — 8 unique additions from 7 path-variants: rename-in-place, same-type reorder, *args forwarding, two-searches-agree fallacy, codemod, coverage completion check). All non-canonical cross-page ids remapped to canonical pages; every added line traced to its source PR hunk (fabricated worker output was detected by orphan-line verification and replaced with true PR content).
## [2026-08-06] dedup | Cross-PR duplicate clusters collapsed: client-side rate limiting (8 PR versions at 3 paths → 1), call-site enumeration (7 versions at 7 paths → additions folded into the already-merged canonical page), stderr/exit-0 diagnostics (4 versions at 4 paths → 1), macOS sysroot (2→1), env-var off switch (2→1), completion predicates (2→1), robots.txt (2→1), harness-mediated results (2→1), leaked test artifacts (2→1), orchestration category naming (orchestration vs agent-orchestration → agent-orchestration). Kept distinct after trigger comparison: differential-testing vs differential-run-agreement (setup vs interpretation), unset-versus-empty-parameters vs env-var-off-switches (semantics vs design, cross-linked), import-time-side-effects vs test-level-choice edge (tactics vs level choice, cross-linked). Merged-main near-dup scan (Jaccard over title+trigger, 141 pages): 0 pairs — no duplication among previously merged content.
## [2026-08-06] ingest | Reconciled post-consolidation flush PRs #42–#43 (created against pre-#44 main). Folded unique content: platforms/filesystems/permissions-and-exec-bits (+`sh "$SCRIPT"` interpreter-invocation rows — stubs need no exec bit, avoids EDR chmod+x heuristics), platforms/shells/command-text-inspected-before-execution (+gate-AUTHOR step 8: parse all three POSIX quoting forms, expand only ~/$HOME/${HOME}; red-then-green bats evidence), testing/quality/checks-that-cannot-pass (+vacuously-green pre-implementation test row), platforms/processes/tool-diagnostics-without-a-failing-exit-code (+repeat-suppression edge, +clang reproduction source), infrastructure/ci-cd/secrets-handling (+independent credential channels row: gh token vs git SSH vs API token, git push --dry-run / author:@me probes), testing/mocking/what-to-mock (+ESM read-only-bindings DI rows, +PATH-emptied tripwire negative-proof). Dropped as duplicates of the #44 state: #42's rate-limit row (already in timeouts-and-retries + client-side-rate-limiting), #42's warning-only-diagnostics page (same trigger as tool-diagnostics-without-a-failing-exit-code), #42's leak-attribution row (already in test-data-and-isolation).
## [2026-08-10] ingest | knowledge-flush of 3 queued insights, 3 new pages (no merge target had the same trigger). testing/mocking/captured-call-arguments — a spy that stores only the argument a review flagged leaves the same call's siblings unasserted; record the call whole (assert_called_with / toHaveBeenCalledWith / all-args matchers), bind the stub to the real signature with spec so positional-vs-keyword is one claim, split "the constant is right" from "the call site passes it on", and re-prove per argument after extracting a resolver (which moves the gap up a layer rather than closing it). Reproduced locally 2026-08-10: partial capture stayed green on a host 0.0.0.0→127.0.0.1 mutation while the whole-call assertion reddened and stayed green on the unmutated call. databases/indexing/trigram-index-short-patterns — a pg_trgm wildcard segment under 3 characters yields no extractable trigrams, so GIN degenerates to a full-index scan while the plan still reads Bitmap Index Scan; branch on whether short keywords are supported input (minimum-length policy / a selective driver index / pg_bigm for LIKE-only workloads / case-folded expression index when ILIKE is required). backend/java/jpa/raw-jdbc-inside-a-jpa-transaction — @Transactional(timeout=N) reaches a raw JdbcTemplate only through a ConnectionHolder bound by JpaTransactionManager (needs the DataSource *and* a JpaDialect that exposes the JDBC connection, same DataSource instance), and the two paths raise different Spring exceptions: Hibernate→QueryTimeoutException vs raw JDBC→DataAccessResourceFailureException on Spring Framework ≤6.2.x. Version boundary verified across tags: the "57014" special case is absent in v5.3.31/v6.0.0/v6.2.0/v6.2.1/v6.2.3/v6.2.5/v6.2.8 and present in v7.0.0. Plumbing: testing, databases and backend/java indexes each +1 row; reciprocal related links added on what-to-mock (+ outbound-contract row pointer), tests-that-cannot-fail, index-selection (+ text-search row pointer), timeouts-and-retries, transaction-boundaries.
## [2026-08-10] ingest | knowledge-flush, 4th candidate of the same flush (it surfaced late: the queue was counted with `wc -l`, which reported 3 because one session file's last line had no trailing newline; the JSON-parsing retirement step moved 4). New: testing/quality/default-values-under-test — a default named as a number in a spec (`ttl_s=600`, `max_tokens=256`) is guarded by neither a mechanism test that passes the value in nor a defaults-constructing test that never exercises it; push the default to its observable point (TTL → both sides of the boundary, cap → exactly the cap then one more) and require red in both mutation directions. Reproduced 2026-08-10 (Python 3, TTL+cap store, 4 pre-existing tests): `ttl 600→1` GREEN and `ttl→6000`/`cap→9999` GREEN against the existing suite, `cap 256→1` caught incidentally, all four RED after adding two bidirectional default tests, unmutated suite green as the control. That sharpened the source candidate, which stated the survival as flat rather than direction-dependent: the grow direction is what no incidental test catches, since a test issuing N items passes for every cap ≥ N and one consuming immediately passes for every TTL > 0. Kept separate from minimum-case-set (case set for the behaviour, not for a shipped default) and from the in-flight #49 unasserted-return-fields (return direction) — reciprocal related links added to minimum-case-set, tests-that-cannot-fail and captured-call-arguments; testing index +1 row.
2 changes: 1 addition & 1 deletion wiki/backend/common/orm/transaction-boundaries.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ sources:
- https://docs.spring.io/spring-framework/reference/data-access/transaction/declarative/tx-propagation.html
- https://vladmihalcea.com/spring-transaction-best-practices/
last_verified: 2026-07-10
related: [backend-common-jobs-idempotent-handlers, backend-common-errors-exception-handling, databases-transactions-isolation-level-selection]
related: [backend-java-jpa-raw-jdbc-inside-a-jpa-transaction, backend-common-jobs-idempotent-handlers, backend-common-errors-exception-handling, databases-transactions-isolation-level-selection]
---

# Transaction Boundaries in Application Code
Expand Down
2 changes: 1 addition & 1 deletion wiki/backend/common/reliability/timeouts-and-retries.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ sources:
- https://sre.google/sre-book/addressing-cascading-failures/
- https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/
last_verified: 2026-08-05
related: [backend-common-api-design-idempotency, backend-common-llm-completion-response-validation, backend-common-reliability-client-side-rate-limiting, debugging-concurrency-intermittent-failures]
related: [backend-java-jpa-raw-jdbc-inside-a-jpa-transaction, backend-common-api-design-idempotency, backend-common-llm-completion-response-validation, backend-common-reliability-client-side-rate-limiting, debugging-concurrency-intermittent-failures]
---

# Calling Another Service over the Network: Timeouts, Retries, Backoff
Expand Down
1 change: 1 addition & 0 deletions wiki/backend/java/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ load it alongside the stack page here — these pages link the exact ids.
| Page | Load when |
|------|-----------|
| [entity-mapping](jpa/entity-mapping.md) | Writing or reviewing JPA entity classes/associations — fetch types (to-one EAGER default), bidirectional sync helpers, entity equals/hashCode; debugging `LazyInitializationException`, `MultipleBagFetchException`, entities vanishing from Sets, or unexpected joins/queries traced to mappings; deciding DTO projection vs entity for read-only endpoints; evaluating Open Session in View |
| [raw-jdbc-inside-a-jpa-transaction](jpa/raw-jdbc-inside-a-jpa-transaction.md) | One query in a JPA/Hibernate service was dropped to `JdbcTemplate`/`NamedParameterJdbcTemplate` and `@Transactional(timeout = N)` is what bounds it; one endpoint's slow queries are cancelled at N seconds on some paths and run for minutes on others; the same timeout surfaces as a 4xx on one path and a 5xx on another; writing the handler branch for a query-cancellation exception, or deciding where to put a statement timeout |
| [persistence-context](jpa/persistence-context.md) | Debugging changes saved without calling save (dirty checking), stale reads within one transaction (first-level cache), flush timing surprises around queries, detached-entity errors (merge vs persist, lost updates after merge); designing or fixing slow/memory-hungry JPA batch inserts; choosing IDENTITY vs SEQUENCE id generation for batch-heavy tables |

## spring
Expand Down
Loading
Loading