Skip to content

docs: record product and technical gap baseline - #999

Open
seonghobae wants to merge 173 commits into
developfrom
docs/product-technical-gap-baseline
Open

docs: record product and technical gap baseline#999
seonghobae wants to merge 173 commits into
developfrom
docs/product-technical-gap-baseline

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Maintains docs/product-technical-gap-baseline.md as the single-writer buyer-facing product/technical/security evidence register required by the current development loop.

2026-09-08 assignment-context and assurance refresh

Exact candidate

  • Base: develop@e71d37e7c58118e6764c96ab7c4492fe33eed6f8.
  • Exact head: 441077ce83347fed807ff859174ea0d5e31fd443.
  • Changed files remain the existing baseline and snapshot note only.
  • This refresh changes no production detector semantics or merge authority.

Ready status admits this exact head to review. Fresh exact-head Checks and current-head review remain merge gates; predecessor results do not transfer. Merge only through ordinary protected auto-merge—never self-approval, stale evidence, gate weakening, or protection bypass.

Refs #1087, #892, #550, #938, #927, #928, #871, #309, #1099, #1106, #1146, #1148, #1150, #1151, #1152, #1153, #1154, #1155, #1156, #1157, #1158, #1159, #1161, #1163, #1164, #1165, #1166, #1167, #1168, #1173, #1174, #1175, #1176, #1177, #1179, #1180, #1182, #1183, #1184, #1185, #1117, #1131, #1181.

Summary by CodeRabbit

  • 문서

    • 제품 및 기술 현황 기준 문서를 2026년 9월 8일 스냅샷으로 전면 개정했습니다.
    • 개발 절차, 검토 규칙, 보안 결함 분석 현황과 제품·기술 격차 상태를 최신화했습니다.
    • 보안 결함 사례와 관련 분석 항목을 대폭 확장하고, 최신 진행 상황을 반영했습니다.
    • 거버넌스 절차와 후속 조치 목록을 9단계 흐름과 57개 항목으로 정리했습니다.
  • 변경 로그

    • 최신 기준 시점의 커버리지, 브랜치 정리, 초안 상태 및 후속 작업을 기록했습니다.

2026-09-08 here-document command-context refresh

Exact candidate: e926e1d30551f0eb7cf7f8dff96f2a50fee56757. The prior b7e4731... had eight successful repository/security workflows and CodeQL still running; those results do not transfer. Fresh exact-head workflows are queued/in progress. Merge only through ordinary protection. Refs #1099, #1173, #1174, #1175, #1176, #1177, #1179, #1180, #1182, #1183, #1184, #1185, #1186.

2026-09-08 quoted sbt publish refresh

Exact candidate: 57e102b77527099d6412ddd35c7808baaeedbc08. Previous head Checks do not transfer. Fresh exact-head Checks and independent review remain merge gates; merge only through ordinary auto-merge. Refs #1099, #1187, #1188.

2026-09-08 quoted Deno and CocoaPods refresh

Exact candidate: 0b218166a3201ed5c0bcb5a470488cbc97d1771b. Seven repository workflows are terminal GREEN; Security Scan and CodeQL PR remain queued, and current-head independent review is absent. Previous-head results do not transfer. Merge only through ordinary auto-merge. Refs #1099, #1188, #1189.

2026-09-08 exact-head review-gate correction

At exact candidate 0b218166a3201ed5c0bcb5a470488cbc97d1771b, all non-review check runs are terminal GREEN or contract-valid skipped; Security Scan and CodeQL PR are no longer queued. Required Noema Review run 34213850866 / job 102021678010 failed outside appguardrail after orchestrator/free returned HTTP 429 at 138.3 seconds during response_error for deepseek-ai/deepseek-v4-flash-0731, with no leaf source finding. OpenCode run 34213850926 / job 102023469992 then failed closed because the current-head peer Noema check was RED and submitted CHANGES_REQUESTED. The owner repair is contextual-orchestrator#1094, which remains open and not yet review-clean. Zero inline threads are unresolved and the PR is mechanically mergeable, but the exact-head review gate is RED. Do not use a source-neutral rerun, empty commit, prior success, or ordinary merge until the owner fix integrates and fresh unchanged-head review evidence succeeds.

2026-09-08 quoted CLI and no-op parser refresh

Exact baseline candidate: df82a527bb70be6ccf5c7b197d82dbee2c8d2c5a. Fresh Checks and current-head independent review remain merge gates; merge only through ordinary protected auto-merge.

2026-09-08 structured manifest argv refresh

Exact baseline candidate: 3a7aa51aa8206cf6b146b461172775618e0f8e73. All nine fresh repository workflows are terminal GREEN; unresolved inline threads are 0 and current-head approval remains absent. Predecessor GREEN/CHANGES_REQUESTED review does not transfer. Merge only through ordinary protected auto-merge.

2026-09-08 nested shell option-state finalization

Exact baseline candidate: 36c39b883704da6f34b57f9ad8de3d420fb6831e. All nine exact-head repository workflows are terminal GREEN; unresolved inline threads are 0. Current-head GitHub approval is absent and predecessor CHANGES_REQUESTED/GREEN evidence does not transfer. Merge only through ordinary protected auto-merge.

2026-09-08 GitHub command-context consumer refresh

Exact baseline candidate: 1e1000936c6e92d16b1c3de045f49e4c0ecbc66b. Fresh exact-head Checks and independent review remain merge gates. Merge only through ordinary protected auto-merge; predecessor evidence does not transfer.

2026-09-08 dashboard regression-corpus refresh

Exact baseline candidate: 0e0e46b04f18d902f978476f7f03b421470eed7c. Fresh Checks and independent review remain merge gates; merge only through ordinary protected auto-merge.

Final concurrent-head binding — 2026-09-08

#1192 advanced through concurrent f416293... / 9d7c48b...; exact fast-forward descendant 5f7a7a40a217f3091c4dc4cc62544c00e32211cb preserves their valid intent and atomically restores the regression, accurate RCA, and CHANGELOG. Exact AST plus 12 rendering assertions pass. Exact baseline candidate: a2c8ec0ab68ca1d4cfb21294769661a1717071e7; prior Checks do not transfer.

@coderabbitai

coderabbitai Bot commented Aug 20, 2026

Copy link
Copy Markdown

Review Change StackReview 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

2026-09-08 기준선 문서를 전면 개정했다. 제품 계약, 보안 결함 corpus, detector 계약, 격차 상태, 거버넌스 절차와 후속 조치를 갱신했다. 관련 변경 로그도 추가했다.

Changes

AppGuardrail 기준선 문서

Layer / File(s) Summary
제품 계약과 책임 경계
docs/product-technical-gap-baseline.md
Goal and evidence contract, 개발 루프, 금지 조치, 네 가지 제품 plane, UML/ERD status와 책임 경계를 갱신했다. Context Map의 GATE 노드를 제거하고 FIND와 EVID 정의를 수정했다.
보안 증거와 격차 계약
docs/product-technical-gap-baseline.md
Security-defect corpus를 확장하고 head 상태를 갱신했다. Detector-development contract, Buyer-visible Gap register와 Technical/TRD gaps를 재작성했다.
거버넌스와 후속 조치
docs/product-technical-gap-baseline.md, CHANGELOG.d/999-gap-baseline-0540.md
9단계 governance loop와 57개 next actions를 기록했다. Draft PR 상태와 restack 정보를 갱신하고 기준선 변경 로그를 추가했다. Standards 참조도 정리했다.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Merge Risk: 🔵 Low · up to c35e0

This change updates buyer-facing security evidence and readiness records. Clarifying how inconclusive results are represented and whether the changelog is historical will prevent consumers from misreading security status or snapshot freshness.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
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.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목은 제품 및 기술 갭 베이스라인을 문서화하는 주요 변경 사항을 정확하고 간결하게 설명합니다.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/product-technical-gap-baseline

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.

@seonghobae

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review Review exact current documentation head c13e6e0. Verify the baseline is current-state evidence rather than a merge claim, includes the live PR/issue queue and explicit buyer/product/technical gaps, preserves observed versus queued/inferred distinctions, and cites standards in APA 7th form without sensitive identifiers. Submit a formal verdict tied only to this SHA; do not update the branch or merge.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Review request: please run the primary OpenCode review and Noema follow-up for exact current head of (base ). This is a docs-only product/technical gap baseline; do not treat this comment as approval or merge authorization.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Correction to the prior malformed comment: @opencode-agent @cwl-noema-review please run the primary OpenCode review and Noema follow-up for exact current head 01ba616 of #999, base develop. This docs-only baseline comment is not approval or merge authorization.

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review please review the exact current head 8c7e1aa for this PR. Confirm the implementation/docs scope, current-head tests and security gates, and report any actionable finding before protected merge.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Open in Devin Review

@seonghobae

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review @coderabbitai please review the exact current PR head 1b5fe81 for PR #999.\n\nThis docs-only follow-up adds the current Dependabot alert and remediation PR #1004 to the 2026-08-21 queue refresh. Please validate only this current head; the table explicitly distinguishes queued Checks and robot review states from approvals and protected merge evidence. Report any actionable documentation accuracy issue with exact line and evidence.

@coderabbitai

coderabbitai Bot commented Aug 21, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/appguardrail"
target="1b5fe81"

echo "== Target commit =="
git rev-parse "${target}^{commit}"
git show -s --format='commit=%H%nparents=%P%nsubject=%s%ncommit_date=%cI' "${target}"

echo
echo "== Available matching refs =="
git branch -a --contains "${target}" || true
git tag --contains "${target}" || true

echo
echo "== Changed files against first parent =="
git diff-tree --no-commit-id --name-status -r "${target}"

echo
echo "== Document outline and numbered content at target =="
git show "${target}:docs/product-technical-gap-baseline.md" > /tmp/product-technical-gap-baseline.md
ast-grep outline /tmp/product-technical-gap-baseline.md --items all || true
nl -ba /tmp/product-technical-gap-baseline.md | sed -n '1,360p'

echo
echo "== Target document diff against first parent =="
git diff --no-ext-diff --unified=80 "${target}^" "${target}" -- docs/product-technical-gap-baseline.md

echo
echo "== PR `#999` live metadata =="
gh pr view 999 --repo "$repo" --json number,state,isDraft,baseRefName,headRefName,headRefOid,updatedAt,url,title \
  || echo "Unable to read PR `#999` metadata."

echo
echo "== PR `#1004` live metadata and checks =="
gh pr view 1004 --repo "$repo" --json number,state,isDraft,baseRefName,headRefName,headRefOid,updatedAt,url,title,author,reviews,statusCheckRollup \
  || echo "Unable to read PR `#1004` metadata."

echo
echo "== Repository Dependabot alerts (if authorized) =="
gh api -H "Accept: application/vnd.github+json" \
  "/repos/${repo}/dependabot/alerts?state=open&per_page=100" \
  || echo "Unable to read Dependabot alerts (the token may not have security-events access)."

Length of output: 2508


🏁 Script executed:

#!/bin/bash
set -u

repo="ContextualWisdomLab/appguardrail"
target="1b5fe81326e7c46a4eb81a48eabb37cf64a1b447"

echo "== Target document with line numbers =="
git show "${target}:docs/product-technical-gap-baseline.md" \
  | awk '{ printf "%6d\t%s\n", NR, $0 }'

echo
echo "== Exact target diff against parent =="
git diff --no-ext-diff --unified=100 "${target}^" "${target}" -- docs/product-technical-gap-baseline.md

echo
echo "== PR `#999` live metadata =="
gh pr view 999 --repo "$repo" \
  --json number,state,isDraft,baseRefName,headRefName,headRefOid,updatedAt,url,title,reviews,statusCheckRollup 2>&1

echo
echo "== PR `#1004` live metadata =="
gh pr view 1004 --repo "$repo" \
  --json number,state,isDraft,baseRefName,headRefName,headRefOid,updatedAt,url,title,author,reviews,statusCheckRollup 2>&1

echo
echo "== PR `#1004` changed dependency files =="
gh pr view 1004 --repo "$repo" --json files \
  --jq '.files[] | {path, additions, deletions}' 2>&1

echo
echo "== Open Dependabot alerts =="
gh api -H "Accept: application/vnd.github+json" \
  "/repos/${repo}/dependabot/alerts?state=open&per_page=100" 2>&1

Length of output: 59956


🏁 Script executed:

#!/bin/bash
set -u

repo="ContextualWisdomLab/appguardrail"

echo "== Public GitHub advisory for CVE-2026-69247 =="
gh api -H "Accept: application/vnd.github+json" \
  "/advisories?cve_id=CVE-2026-69247" 2>&1

echo
echo "== PR `#1004` title and body =="
gh pr view 1004 --repo "$repo" --json number,title,body,url,headRefOid,baseRefName,state 2>&1

echo
echo "== PR `#1004` exact dependency diff =="
gh pr diff 1004 --repo "$repo" -- requirements-release.txt 2>&1

Length of output: 8035


@seonghobae Formal verdict for PR #999 commit 1b5fe81326e7c46a4eb81a48eabb37cf64a1b447 only: no actionable documentation-accuracy findings.

  • The commit changes only docs/product-technical-gap-baseline.md.
  • Line 91 accurately identifies PR #1004 as open against develop at head ff95e69, with queued checks and no qualifying approval.
  • The public GitHub advisory confirms that CVE-2026-69247 affects cryptography versions < 50.0.0, has high severity, and is fixed in 50.0.0.
  • PR #1004 states that it updates the transitive release-tooling dependency from 49.0.0 to 50.0.0.
  • Lines 78-81 explicitly keep queued checks and robot review states separate from approvals and protected-merge evidence.
  • The baseline states that it is a working baseline, not a release, certification, or merge claim.

GitHub denied repository Dependabot-alert API access with HTTP 403. This prevents independent verification of the alert’s live repository status. It does not contradict Line 91. Line 91 requires confirmation of alert closure only after merge.

You are interacting with an AI system.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Current exact head is 3a66056. @opencode-agent @cwl-noema-review please validate this docs head. It refreshes the queue row for PR #1005 from 58565d8 to d968a0e and updates the observed local test count to 1047. Report any documentation accuracy issue with exact line and current GitHub evidence. Queued Checks and robot review states remain distinct from protected approvals.

@seonghobae

Copy link
Copy Markdown
Contributor Author

@opencode-agent @cwl-noema-review please review exact current head 80c32e0 after the baseline refresh. The PR records the current #1006 remediation handoff head; no product behavior was changed. Required Checks remain queued and no failures are reported.

@opencode-agent
opencode-agent Bot disabled auto-merge September 8, 2026 13:27
@seonghobae
seonghobae enabled auto-merge (squash) September 8, 2026 13:52
@opencode-agent
opencode-agent Bot disabled auto-merge September 8, 2026 13:53

@opencode-agent opencode-agent 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.

Pull request overview

OpenCode could not approve from deterministic current-head evidence because GitHub Checks have failed.

Findings

1. HIGH Current-head GitHub Checks - Fix failed required checks before approval

  • Problem: Failed same-head checks remain for 1e1000936c6e92d16b1c3de045f49e4c0ecbc66b.
  • Root cause: The model-unavailable evidence fallback is allowed only when peer GitHub Checks are complete and clean.
  • Fix: Read and fix the failed check logs below, then rerun the current-head checks.
  • Regression test: Keep the model-unavailable fallback gated on an empty failed-check rollup.

Failed checks:

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Repository file: 999-gap-baseline-0540.md"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Repository file: 999-gap-baseline-0540.md"]
  R1 --> V1["required checks"]
  Evidence --> S2["Repository file: CHANGELOG.md"]
  S2 --> I2["repository behavior"]
  I2 --> R2["Review risk: Repository file: CHANGELOG.md"]
  R2 --> V2["required checks"]
  Evidence --> S3["Docs: product-technical-gap-baseline.md"]
  S3 --> I3["operator or user guidance"]
  I3 --> R3["Review risk: Docs: product-technical-gap-baseline.md"]
  R3 --> V3["docs review"]
Loading

@seonghobae
seonghobae enabled auto-merge (squash) September 8, 2026 15:02

@opencode-agent opencode-agent 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.

Pull request overview

OpenCode could not approve from deterministic current-head evidence because GitHub Checks have failed.

Findings

1. HIGH Current-head GitHub Checks - Fix failed required checks before approval

  • Problem: Failed same-head checks remain for a2c8ec0ab68ca1d4cfb21294769661a1717071e7.
  • Root cause: The model-unavailable evidence fallback is allowed only when peer GitHub Checks are complete and clean.
  • Fix: Read and fix the failed check logs below, then rerun the current-head checks.
  • Regression test: Keep the model-unavailable fallback gated on an empty failed-check rollup.

Failed checks:

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Repository file: 999-gap-baseline-0540.md"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Repository file: 999-gap-baseline-0540.md"]
  R1 --> V1["required checks"]
  Evidence --> S2["Repository file: CHANGELOG.md"]
  S2 --> I2["repository behavior"]
  I2 --> R2["Review risk: Repository file: CHANGELOG.md"]
  R2 --> V2["required checks"]
  Evidence --> S3["Docs: product-technical-gap-baseline.md"]
  S3 --> I3["operator or user guidance"]
  I3 --> R3["Review risk: Docs: product-technical-gap-baseline.md"]
  R3 --> V3["docs review"]
Loading

Copy link
Copy Markdown
Contributor Author

Exact candidate refresh — 2026-09-08 UTC

Exact head 7056b65c5d2ef4cc5c671366178951a77d8d5109 records the unchanged #1192 dashboard regression boundary, its pending authenticated CodeQL verdict, and the #999 Required Noema transport failure in canonical owner terms. The baseline links contextual-orchestrator #1094 exact head d544589f922c434f05b945dcf487939522bff05a and the required owner GREEN → protected merge → immutable release → consumer bump sequence.

Previous #999 head a2c8ec0ab68ca1d4cfb21294769661a1717071e7 had all nine repository workflows GREEN, zero unresolved threads, and exact-head OpenCode CHANGES_REQUESTED because Required Noema was RED. None of those Checks/reviews transfer to this documentation head. Fresh Checks and current-head independent review remain mandatory; ordinary auto-merge is armed.

Copy link
Copy Markdown
Contributor Author

Browser carryover candidate — 2026-09-08 UTC

Exact head e71828e942ce5b16d746b8a85d865c07897d2614 binds #1192's current two-parent integration eea82430af27ca5d67b56551be9693745d6f8f75. #1117 d3283a16... and prior #1192 5f7a7a40... are both ancestors with 0 behind, so the browser prerequisite and stronger severity/static repair are retained in one successor.

Previous #999 head 7056b65c... had only partial fresh execution when this evidence changed; no result transfers. Fresh exact-head Checks and current-head independent review remain required. Ordinary auto-merge is armed.

Copy link
Copy Markdown
Contributor Author

Exact concurrent-repair binding — 2026-09-08 UTC

Exact head 58f2319fc594b17bb28409450a7a6944ae97efdd records #1192 RED c838696a... → GREEN a006df52f948e2f233f8128ccea7ce8486829fc7: preserve the concurrent count-projection intent, reject partial/fractional/negative/non-finite counts, restore #1117 Chromium dependencies/workflow and the combined browser/static corpus, restore accurate RCA/CHANGELOG, and remove completed update_tests.py.

The earlier #999 candidates and Checks do not transfer. Fresh exact-head workflow/review evidence is mandatory; ordinary auto-merge is armed.

Copy link
Copy Markdown
Contributor Author

Exact single-writer binding: docs/product-technical-gap-baseline.md and CHANGELOG.md now record #1192 RED 1456e14... (partial parseInt admission plus deleted Chromium/browser/static corpus) and normal atomic recovery candidate 7e1bb470..., including #1117 ancestry and predecessor-only 1003/1003 browser evidence. This PR's exact head is 029781c56dcf41135dca98aab1538a40b9b77f50; predecessor Checks/reviews do not transfer. Fresh exact-head Checks and current-head review remain merge gates; ordinary protected auto-merge only.

Copy link
Copy Markdown
Contributor Author

Exact-head check update for 029781c56dcf41135dca98aab1538a40b9b77f50: all nine repository workflows are terminal GREEN, CodeQL compatibility and GitHub Advanced Security CodeQL are GREEN, and all eight inline threads remain resolved. Current OpenCode job 102146025097 failed closed because no authenticated exact-head review receipt existed yet; it did not report a source finding. Noema job 102146707461 remains in progress and current-head approval is absent. Ordinary auto-merge remains armed and protected.

Copy link
Copy Markdown
Contributor Author

Single-writer exact binding advanced to bd4cc4b751d596f468e7310c21f91eada1f6e5a1. The baseline and CHANGELOG now record #1192 exact c98c301..., hosted Tests 34251749490 (Chromium; 1003/1003 on Python 3.11 and 3.13), responsive list/detail artifact 10066280431, and its exact SHA-256. This closes only the browser-artifact Gap; CodeQL handoff and independent review remain merge gates. Fresh exact-head Checks are required; ordinary auto-merge only.

Copy link
Copy Markdown
Contributor Author

Exact baseline head 6d6d77495a73a9ae814b138e53c90e2ea19cd3d6 records #1192 mobile-overflow RED 1d5adbc... (document=563, viewport=390, 1002 passed / 1 failed) and minimal GREEN 4dbee0e.... Exact Tests 34252370797 passed 1003/1003 on Python 3.11/3.13 and artifact 10066505328 is revision-bound with SHA-256 5b3dd4.... Fresh exact-head Checks/review are required; ordinary auto-merge only.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation priority: medium Normal-priority or P2 work status: draft Draft pull request type: docs Documentation, ADR, PRD, or technical writing

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

1 participant