Skip to content

ADFA-4357 Add agent & contributor documentation set - #1422

Merged
hal-eisen-adfa merged 33 commits into
stagefrom
ADFA-4357-add-markdown-files-for-agents
Jul 14, 2026
Merged

ADFA-4357 Add agent & contributor documentation set#1422
hal-eisen-adfa merged 33 commits into
stagefrom
ADFA-4357-add-markdown-files-for-agents

Conversation

@hal-eisen-adfa

Copy link
Copy Markdown
Collaborator

ADFA-4357 — Agent & contributor documentation set

Adds a coordinated set of Markdown docs to onboard both human and AI contributors and to record the project's architectural decisions. Docs only — no code or build changes.

What's included

File Purpose
CLAUDE.md Operational guide for Claude Code: build/test commands, ABI flavors, project constraints. Points to ARCHITECTURE.md for architecture.
AGENTS.md Operational rules for agents: CI-vs-local, Jira CLI, SonarQube MCP, git-message handling.
ARCHITECTURE.md Single source of truth for module layout, layering & data flow (UDF), dependency rules, tech stack, state management, testing.
REVIEW.md Code-review coaching: exception handling (Sentry crash wrapper), LeakCanary leaks, StrictMode, OWASP, tests/coverage, analytics, duplication, docstrings, strings.xml.
SECURITY.md How to avoid introducing new SonarQube/Snyk/Semgrep blocker findings; vulnerability classes for an Android/Kotlin IDE.
docs/adr/ 8 Architecture Decision Records (MADR/Nygard) + index.

ADRs

  1. Persistence without Room
  2. On-device builds via the Gradle Tooling API (out-of-process)
  3. Vendored/forked desktop toolchain via composite-build substitution
  4. Embedded Termux runtime
  5. Per-ABI product flavors (v7/v8)
  6. Koin for dependency injection
  7. Custom StrictMode whitelist engine
  8. Retaining the com.itsaky.androidide namespace after rebrand

Notes for reviewers

Content was written against the actual codebase (verified patterns: Koin DI, Firebase IAnalyticsManager, the StrictMode whitelist engine, Sentry global handler, tooling-api out-of-process, vendored toolchain). Two claims are author inferences worth a sanity check:

  • ARCHITECTURE.md / SECURITY.md: "Retrofit is in the catalog but effectively unused in app code."
  • ADR 0005: the per-ABI rationale assumes direct-APK-download is the primary distribution channel (Play App Bundle splits treated as not relied upon).

Follow-ups (intentionally out of scope)

  • Remove the unused Room Gradle deps in idetooltips (surfaced by ADR 0001/0003).
  • Optional: add a back-link from ARCHITECTURE.md to docs/adr/.

Add a coordinated set of Markdown docs to onboard both human and AI
contributors and to capture the project's architectural decisions.

- CLAUDE.md: operational guide for Claude Code (build/test commands,
  ABI flavors, project constraints); points to ARCHITECTURE.md for
  architecture rather than duplicating it.
- AGENTS.md: operational rules for agents (CI-vs-local, Jira CLI,
  SonarQube MCP, git message handling); persistence rule now points to
  ARCHITECTURE.md.
- ARCHITECTURE.md: single source of truth for module layout, layering &
  data flow (UDF), dependency rules, tech stack, state management, and
  the testing strategy.
- REVIEW.md: code-review coaching (exception handling vs the Sentry
  crash wrapper, LeakCanary leaks, StrictMode, OWASP, tests/coverage,
  analytics, duplication, docstrings, strings.xml).
- SECURITY.md: how to avoid introducing new SonarQube/Snyk/Semgrep
  blocker findings; vulnerability classes for an Android/Kotlin IDE.
- docs/adr/: 8 Architecture Decision Records (MADR/Nygard) plus an index
  covering persistence-without-Room, on-device builds via the Gradle
  Tooling API, the vendored toolchain, embedded Termux, per-ABI flavors,
  Koin DI, the StrictMode whitelist engine, and retaining the
  com.itsaky.androidide namespace.
@coderabbitai

coderabbitai Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds repository-wide documentation for operating rules, architecture conventions, review standards, security guidance, and ADRs covering persistence, build, runtime, DI, flavors, StrictMode, namespace retention, and Compose.

Changes

Project Documentation Suite

Layer / File(s) Summary
AI agent and contributor operating guides
AGENTS.md, CLAUDE.md
Defines emulator selection, persistence limits, dependency and sizing rules, CI/Jira/SonarQube conventions, tempfile-based git/gh messaging, flox-wrapped Gradle usage, ABI flavor task naming, and document references.
Architecture overview and implementation rules
ARCHITECTURE.md
Defines the on-device IDE layering, module boundaries, dependency direction, flavor/build conventions, persistence policy, state-management patterns, and testing guidance.
Architecture Decision Records and ADR index
docs/adr/README.md, docs/adr/000*
Adds the ADR index and records decisions for persistence without Room, Gradle Tooling API builds, vendored toolchains, embedded Termux, per-ABI flavors, Koin DI, StrictMode whitelist enforcement, namespace retention, and Jetpack Compose for new UI.
Code review rules and workflow checks
REVIEW.md
Adds review checklists and rules for exceptions, leaks, StrictMode, security, tests, observability, accessibility, contextual help, offline-first behavior, feature gating, plugin impact, and PR hygiene.
Security baseline and vulnerability guidance
SECURITY.md
Defines the blocker baseline policy, tool responsibilities, vulnerability classes to avoid, dependency and reliability guidance, and pre-push/private reporting instructions.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Suggested reviewers

  • jatezzz
  • itsaky-adfa
  • jomen-adfa

Poem

🐇 I nibbled through docs, crisp and neat,
ADRs lined up in a tidy seat.
AGENTS, REVIEW, and SECURITY too,
A rabbit hops where the rules shine through.
Compose and architecture, side by side—
Hoppy trails for this codebase ride! 🥕

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the docs-only change by naming the new agent and contributor documentation set.
Description check ✅ Passed The description is directly aligned with the change set and accurately summarizes the added documentation and ADRs.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ADFA-4357-add-markdown-files-for-agents

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
docs/adr/0005-per-abi-product-flavors.md (1)

39-39: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Trailing artifact at end of file.

Line 39 contains a stray 39 character that appears to be a formatting artifact or incomplete truncation.

Verify the file ends cleanly. If this is the intended end, remove the stray character.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/adr/0005-per-abi-product-flavors.md` at line 39, The file
docs/adr/0005-per-abi-product-flavors.md has a stray character "39" at the end
that appears to be a formatting artifact. Locate the end of the file and remove
this trailing character to ensure the markdown file ends cleanly without any
extraneous content.
🧹 Nitpick comments (2)
REVIEW.md (1)

80-80: 💤 Low value

Minor: replace "exactly" with more specific verb.

LanguageTool flags "exactly" as an over-used intensifier. Consider "are" or "represent" depending on intended emphasis, or rephrase to avoid the intensifier.

Example:

-- **No duplication.** If you copy-pasted a block, extract a function/extension into the right `common`/`utils` module. Before adding a helper, grep — we likely already have it. Repeated literals/magic numbers → named constants.
+- **No duplication.** If you copy-pasted a block, extract a function/extension into the right `common`/`utils` module. Before adding a helper, grep — we likely already have it. Repeated literals/magic numbers become named constants.

Alternatively, keep the intensity but rephrase: "those are the error paths the crash wrapper would otherwise catch" → "those represent the error paths the crash wrapper would otherwise catch".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@REVIEW.md` at line 80, In the REVIEW.md file, locate the sentence containing
"those are exactly what the crash wrapper would otherwise catch in production"
and remove the over-used intensifier "exactly" by replacing it with a more
specific verb such as "represent" or rephrase the sentence to eliminate the
intensifier entirely (for example, change "those are exactly what" to "those
represent what" or similar phrasing that conveys the same meaning without the
weak intensifier).
docs/adr/0005-per-abi-product-flavors.md (1)

9-9: 💤 Low value

Minor: replace "very large" with a stronger adjective for clarity.

LanguageTool flags "very large" as an over-used intensifier. Consider "substantial", "sizable", or "prohibitive" depending on emphasis.

Example:

-Code On The Go is distributed primarily as a **direct APK download** from the App Dev for All website, not exclusively through Google Play, so we cannot rely on Play's automatic per-ABI splitting to slim downloads.
+Code On The Go is distributed primarily as a **direct APK download** from the App Dev for All website, not exclusively through Google Play, so we cannot rely on Play's automatic per-ABI splitting to slim substantial downloads.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/adr/0005-per-abi-product-flavors.md` at line 9, In the file
docs/adr/0005-per-abi-product-flavors.md, replace the phrase "very large" with a
stronger, more specific adjective in the sentence describing universal APK size.
Consider using alternatives such as "substantial", "sizable", or "prohibitive"
to provide clearer emphasis on why per-ABI splitting is necessary, as "very
large" is flagged as an over-used intensifier. Choose the adjective that best
conveys the intended severity of the size concern in the context of direct APK
distribution.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@docs/adr/0005-per-abi-product-flavors.md`:
- Line 39: The file docs/adr/0005-per-abi-product-flavors.md has a stray
character "39" at the end that appears to be a formatting artifact. Locate the
end of the file and remove this trailing character to ensure the markdown file
ends cleanly without any extraneous content.

---

Nitpick comments:
In `@docs/adr/0005-per-abi-product-flavors.md`:
- Line 9: In the file docs/adr/0005-per-abi-product-flavors.md, replace the
phrase "very large" with a stronger, more specific adjective in the sentence
describing universal APK size. Consider using alternatives such as
"substantial", "sizable", or "prohibitive" to provide clearer emphasis on why
per-ABI splitting is necessary, as "very large" is flagged as an over-used
intensifier. Choose the adjective that best conveys the intended severity of the
size concern in the context of direct APK distribution.

In `@REVIEW.md`:
- Line 80: In the REVIEW.md file, locate the sentence containing "those are
exactly what the crash wrapper would otherwise catch in production" and remove
the over-used intensifier "exactly" by replacing it with a more specific verb
such as "represent" or rephrase the sentence to eliminate the intensifier
entirely (for example, change "those are exactly what" to "those represent what"
or similar phrasing that conveys the same meaning without the weak intensifier).

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 636711f5-1206-408a-9727-feafce7276a9

📥 Commits

Reviewing files that changed from the base of the PR and between 8082c92 and d279292.

📒 Files selected for processing (14)
  • AGENTS.md
  • ARCHITECTURE.md
  • CLAUDE.md
  • REVIEW.md
  • SECURITY.md
  • docs/adr/0001-persistence-without-room.md
  • docs/adr/0002-on-device-builds-via-gradle-tooling-api.md
  • docs/adr/0003-vendored-forked-desktop-toolchain.md
  • docs/adr/0004-embedded-termux-runtime.md
  • docs/adr/0005-per-abi-product-flavors.md
  • docs/adr/0006-koin-dependency-injection.md
  • docs/adr/0007-strictmode-whitelist-engine.md
  • docs/adr/0008-retain-androidide-namespace.md
  • docs/adr/README.md

Promote accessibility from a proposed item to an enforced review section
and add a parallel contextual-help (long-press 3-tier) rule, both keyed
to existing patterns (ADFA-2667 screen-reader work, the idetooltips module).

- REVIEW.md: new sections for content-description coverage and long-press
  help; matching 60-second-checklist entries; renumber trailing sections.
- idetooltips/README.md: state the long-press-for-help-everywhere principle
  and the three-tier (tooltip / tooltip / web page) help model.
@hal-eisen-adfa
hal-eisen-adfa marked this pull request as draft June 19, 2026 03:37
- ADR 0009: new IDE UI is Jetpack Compose, no new XML View screens; the
  UDF/Koin/StateFlow stack is unchanged. Indexed in docs/adr/README.md.
- ARCHITECTURE.md: tech-stack UI row + overview now point to ADR 0009
  instead of claiming the IDE is 'Not Compose'.
- REVIEW.md: new Compose-only rule in Architecture alignment; accessibility
  (§8) now gives View + Compose forms for each rule (semantics,
  clearAndSetSemantics, the HardcodedText lint gap); contextual help (§9)
  notes idetooltips has no Compose entry point yet (displayTooltipOnLongPress
  is View-based); promote Offline-first from proposed to an accepted section.
…idge

The Compose-only mandate (ADR 0009) and the long-press-everywhere rule
(REVIEW.md section 9) need a Compose entry point into the View-based
idetooltips system, which does not exist yet. Reference the follow-up
ticket from both docs so the gap is tracked, not forgotten. Docs only.
…4382

The README's usage examples document a showIDETooltip() API that no longer
exists (real API: TooltipManager.showTooltip / displayTooltipOnLongPress)
and claim a Room store the module doesn't use (it's raw SQLite). Add a
banner so contributors trust the code until the refresh lands. Docs only.
Leave idetooltips/README.md untouched on this PR. Removes both the
design-principle section and the staleness banner added earlier; the
README refresh is handled wholesale in ADFA-4382 instead.
- REVIEW.md: new Code-quality rule + 60-second-checklist entry requiring a
  change to update any module README/ARCHITECTURE.md/ADR it affects, or
  leave a tracked note.
- AGENTS.md: one-line operational pointer to the REVIEW.md rule, so agents
  that read AGENTS.md (but not REVIEW.md) still apply it.
Tighten prose across CLAUDE.md, AGENTS.md, ARCHITECTURE.md, REVIEW.md, and
the ADRs — cut hedging, doubled phrasings, and restated context; no facts,
paths, commands, or decisions changed. Also:
- REVIEW.md §9: drop the stale showIDETooltip reference in the intro.
- ARCHITECTURE.md: reconcile the data-flow UI note with ADR 0009 (existing
  UI is Views; new UI is Compose) instead of a flat 'not Compose'.
- Experimental feature flag: clarify it's a user-facing early-access opt-in
  (singular flag), not a kill switch for us to disable features in the field.
- Remove the performance-budget proposal; captured as ADFA-4383 instead.
Move it out of 'Open for discussion' into a numbered review section; gate
not-yet-stable features behind the user-facing early-access flag. Renumber
PR hygiene to §13.
…scussion section

The MIN_SDK guard concern doesn't arise in practice; remove the item. It was
the last proposal, so remove the empty section scaffolding too. REVIEW.md now
ends at §13 PR hygiene.
@hal-eisen-adfa
hal-eisen-adfa marked this pull request as ready for review June 19, 2026 06:57
Comment thread docs/adr/0001-persistence-without-room.md Outdated
Comment thread docs/adr/0001-persistence-without-room.md Outdated
Comment thread docs/adr/0003-vendored-forked-desktop-toolchain.md
Comment thread docs/adr/0008-retain-androidide-namespace.md
Comment thread AGENTS.md Outdated
Comment thread ARCHITECTURE.md Outdated
Comment thread ARCHITECTURE.md
Comment thread CLAUDE.md Outdated
Comment thread REVIEW.md Outdated
Comment thread REVIEW.md Outdated
Comment thread AGENTS.md Outdated
Comment thread docs/adr/0009-jetpack-compose-for-new-ui.md Outdated
Comment thread AGENTS.md Outdated
Comment thread REVIEW.md
Comment thread REVIEW.md
Comment thread REVIEW.md
Comment thread REVIEW.md Outdated
Comment thread REVIEW.md
Comment thread REVIEW.md Outdated
Comment thread REVIEW.md
… exceptions

Reframes ADR 0001 and cascades to ARCHITECTURE.md, AGENTS.md, REVIEW.md per
review feedback from itsaky-adfa and dara-abijo-adfa. Room is the default;
raw SQLite is reserved for prebuilt read-only DBs, performance/allocation-
critical indexing, and cross-boundary schemas. Recent Projects is the
reference example of the default, not an exception.

Renames 0001-persistence-without-room.md -> 0001-prefer-room-for-persistence.md.
…ing API

Rewrites ADR 0003 per itsaky-adfa's correction (confirmed against the code):
composite-build/build-deps* modules ship in the APK and run at IDE runtime
(e.g. Java LSP via javac/jdk-compiler/jdt), and live in composite builds for
build-time caching. Adds an explicit callout that the Gradle Tooling API is a
separate out-of-process JDK from terminal bootstrap packages, driven over
JSON-RPC. Fixes two cross-reference lines in ADR 0002 that conflated the two.
Per jatezzz's review: Claude Code auto-reads CLAUDE.md, so a separate AGENTS.md
forces a secondary read and risks the operational rules being skipped. Folds all
unique AGENTS.md content into CLAUDE.md (emulator/device, Jira CLI, SonarQube MCP,
CI-job resolution, official-actions-in-CI, git/gh messaging, keep-docs-current,
brevity) and replaces AGENTS.md with a thin pointer so the cross-tool AGENTS.md
convention still resolves without duplicated, drift-prone content. Repoints the
AGENTS.md citations in REVIEW.md and SECURITY.md to CLAUDE.md.
…arcelize, namespace)

Verified each against the code before editing:
- Code style: tabs + LF via Spotless (leadingSpacesToTabs), not 2-space; and the
  right formatters (Java=Eclipse config, Kotlin/Gradle=ktlint, XML=Eclipse WTP),
  not ktfmt/google-java-format/Android Studio. Fixed CLAUDE.md and REVIEW.md.
- State management: require sealed types for mutually-exclusive UI states (no
  boolean hell); reframed the example to lead with real sealed CloneRepoUiState
  and caption the PluginManagerUiState boolean example as independent-fields-only.
- Added a Parceling row: use @parcelize, never hand-roll Parcelable.
- REVIEW.md: strings live in the :resources module's strings.xml.
- Emulator: app is arm-only (v7/v8, no x86), so a physical arm device is often
  needed; an x86_64 emulator can't run it.
- ADR 0008: the decisive reason to keep the namespace is the terminal bootstrap
  packages coupling — a rename must be an atomic big-bang change across both.
- PR sizing (fryanpan): prefer one PR per ticket/use case, break large work
  into reviewable commits (mechanical vs. behavioral) with review-by-commit;
  ~500 LOC/10 files is a soft signal, not a hard cap. (CLAUDE.md, REVIEW.md)
- ADR status (dara-abijo-adfa): all 9 ADRs + README index Accepted -> Proposed;
  they ratify to Accepted when this PR merges.
- Nits (CodeRabbit): ADR 0005 'very large' -> 'prohibitively large'; REVIEW.md
  drop the 'exactly' intensifier. (The stray '39' char was already absent.)
- New docs/plugin-api.md (Daniel-ADFA): maintainer-facing plugin API stability &
  compatibility guide. Defines the contract surface (:plugin-api interfaces/data
  classes/enums + manifest keys, permission strings, formats), the current policy
  (API not frozen, backward/binary compat not yet guaranteed but changes must be
  deliberate/documented/justified), the Kotlin binary-compat traps, a pre-change
  checklist, and a follow-up to add binary-compat tooling. Grounded in the plugin
  dev guide and the real :plugin-api module.
- REVIEW.md 13 (fryanpan): replaced the vague 'consider impact on plugins' with a
  concrete check — does it touch the API surface, is any break deliberate and
  documented, and a mechanical impact check against the in-tree example plugins
  (apk-viewer / markdown-preview / keystore-generator) and the plugin-examples repo.
- Fixed the plugin.json manifest claim -> AndroidManifest.xml <meta-data> in
  ARCHITECTURE.md and REVIEW.md (meta-data is the primary loader path).
Commits the in-repo author-facing plugin guide (project layout, AndroidManifest
meta-data contract, theme-aware icons, building/installing, troubleshooting) and
wires reciprocal links between it (how to author) and plugin-api.md (how to
evolve the API).
- Per-item evidence ledger: a review must show what it checked and the result,
  proportional to change size (not bare LGTM).
- Feature completeness: start from the Jira ticket; confirm requirements are
  implemented and the intended flow is tested. Added as lead rule + checklist item.
- Coverage target: >=50% line & branch on new non-UI code (rising over time),
  proven via jacocoAggregateReport; UI exempt.
- Architecture (10): inlined the key rules as a checklist (UDF, sealed state,
  Koin, Room, module dependency direction, Compose, system bars) so reviewers
  don't have to follow links; noted an architecture-review skill as follow-up.
- Threading (3): long-running CPU work off the main thread (JSON decode crash).
- Duplication (7): broadened to reimplemented logic / cross-subagent duplication.
- Offline (11) and leaks (2): concrete verification steps (adb network off; a
  clean LeakCanary run) recorded as evidence.
- CLAUDE.md: post in-progress ticket updates via the jira CLI.
- SECURITY.md: relationship to Claude's /security-review (complements the three
  CI scanners, doesn't replace the enforced baseline).
…NTRIBUTING.md

- CLAUDE.md: new Branch model section — main is release-only (merges from stage),
  stage is the protected default/integration branch and the base for feature
  branches, feature branches PR back into stage. Never target main directly.
- CONTRIBUTING.md: replaced the stale 'dev branch is protected' line (there is no
  dev branch; stage is the protected default, main is not) with the correct branch
  model, and corrected the Source code format section (ktfmt/google-java-format/
  2-space -> Spotless: tabs, ktlint for Kotlin, Eclipse for Java/XML).

Edits deliberately avoid the CONTRIBUTING.md regions changed by PR 1478
(community-contribution branch naming) to prevent merge conflicts.
@hal-eisen-adfa

Copy link
Copy Markdown
Collaborator Author

Thanks everyone — great round of feedback. Pushed 9 commits addressing all of it, and replied inline on each thread. Summary:

  • Persistence framing was backwards (@itsaky-adfa, @dara-abijo-adfa): flipped to Room-default, documented the real raw-SQLite exceptions (symbol indexing, web server, prebuilt read-only tooltip/help DBs), and renamed ADR 0001 → 0001-prefer-room-for-persistence.md. af92f6c5
  • ADR 0003 rewritten to @itsaky-adfa's correction — runtime toolchain (ships in APK, powers Java LSP) vs. the Tooling API (separate out-of-process JDK over JSON-RPC) — verified against the code. c9ebce4d
  • AGENTS.md merged into CLAUDE.md (@jatezzz); AGENTS.md is now a thin pointer. 0d052265
  • Factual fixes (@itsaky-adfa): tabs/Spotless (+ correct formatters), sealed-class state with a real example, @Parcelize, the terminal-packages namespace rationale, arm-only emulator note. ac5bba54
  • All ADRs → Proposed until this merges (@dara-abijo-adfa). New docs/plugin-api.md (@Daniel-ADFA) covering the API surface + binary-compat traps. a00557db, b737bcec
  • REVIEW.md made verifiable (@fryanpan): a per-item evidence ledger, start-from-the-ticket completeness check, a ≥50% coverage target proven via JaCoCo (starting low, rising), an inline architecture checklist (so link-following isn't required), off-main-thread compute, and concrete offline/LeakCanary verification. 920275da
  • Also added docs/PLUGIN_AUTHORING.md, and documented the main/stage/feature branch model (fixing a stale CONTRIBUTING.md that referenced a non-existent dev branch). c9793d34, f3bed858

Two things worth a look from the team:

  1. ADR status — I set all nine to Proposed per @dara-abijo-adfa. Shout if any should be Accepted on merge.
  2. Harness validation (@fryanpan's fair question — "how do we tell if this is good?") is intentionally not claimed as done. Proposed next step: run this REVIEW.md over several recently-merged PRs and compare against the human feedback they got, then fold the misses back in.

Re-requesting review from @itsaky-adfa, @jatezzz, @dara-abijo-adfa.

hal-eisen-adfa and others added 7 commits July 11, 2026 11:06
A project skill that forces a read of ARCHITECTURE.md + the ADRs, then checks a
diff against the documented patterns (UDF/state, Koin, Room-vs-SQLite, Compose,
module boundaries, ABI flavors, dependency substitution, @parcelize, strings),
tracing each finding to its ADR/section. Addresses the 'rules in on-demand docs
get missed' problem: the skill guarantees the authoritative docs are read at
review time rather than relying on prose links. REVIEW.md §10 now points to it.

Commits only the skill file under .claude/ (not local settings or hooks).
A non-blocking pre-push hook (.githooks/pre-push/0002-architecture-review-nudge)
that reminds the author to run an architecture pass when a push touches first-party
Kotlin/Java. It always exits 0 (never gates), and stays silent unless production
app source changed — docs/test/vendored-only pushes produce no output. Points at
the architecture-review skill and REVIEW.md section 10.

Runs via the existing .githooks dispatcher after 0001-run-spotless.
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
@hal-eisen-adfa
hal-eisen-adfa dismissed stale reviews from dara-abijo-adfa and jatezzz July 14, 2026 00:03

Addressed, thanks

@hal-eisen-adfa
hal-eisen-adfa merged commit 5f14ef7 into stage Jul 14, 2026
4 checks passed
@hal-eisen-adfa
hal-eisen-adfa deleted the ADFA-4357-add-markdown-files-for-agents branch July 14, 2026 00:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants