Thông tin ADR
| Trường | Giá trị |
|---|---|
| ID | ADR-0316 |
| Tier | 03xx |
| Trạng thái | accepted |
| Ngày tạo | 2026-03-06 |
| Cập nhật lần cuối | 2026-03-06 |
| Audit định kỳ | Quarterly |
| Thay thế | — |
| Bị thay thế bởi | — |
Packs Áp dụng
---
title: "Portfolio SIT — {cycle-id} Milestone {N}"
date: "YYYY-MM-DD"
milestone: "M{N}"
cycle_id: "{cycle-id}"
verdict: PASS | FAIL | PARTIAL
---
## Tier 2 Results
| Scenario | Components | Result | Notes |
|----------|------------|--------|-------|
| SIT-INT-01 | claire-web-app → engine-gateway | PASS/FAIL | |
| SIT-INT-02 | engine-gateway → knowledge-gateway | PASS/FAIL | |
| SIT-INT-03 | Auth chain Supabase JWT | PASS/FAIL | |
## Waivers (if PARTIAL)
| Scenario | Reason | Approved by |
|----------|--------|-------------|
## Verdict: PASS / FAIL / PARTIAL
---
title: "Portfolio UAT — {cycle-id} Milestone {N}"
date: "YYYY-MM-DD"
milestone: "M{N}"
tester: "Daniel"
verdict: PASS | FAIL | DEFERRED-WITH-REASON
---
## Journey Results
| Journey | Description | Result | Notes |
|---------|-------------|--------|-------|
| J1 | Chat + Command + Engine Dashboard | PASS/FAIL | |
| J2 | Chat + KG Search | PASS/FAIL | |
| J3 | New user onboarding (M2+) | PASS/FAIL/N-A | |
## Issues Found
| Issue | Severity | Blocking? |
|-------|----------|-----------|
## Verdict: PASS / FAIL / DEFERRED-WITH-REASON
Per-project flow (autonomous, no portfolio coordination):
plan → execute → verify → sit (ADR-0818) → uat (ADR-0814)
→ merge to main → staging auto-deploy → [RELEASE ON DEMAND]
→ git tag vX.Y.Z → deploy to production
Portfolio Milestone Review (after ALL projects in milestone released):
→ Collect per-project audit verdicts (L1 check)
→ Verify per-project git tags + production deploy (L2 check)
→ Run Portfolio SIT Gate — Tier 2 cross-component scenarios (L3)
→ Run Portfolio UAT Gate — integrated user journeys (L4)
→ [PORTFOLIO LAUNCH MARKER] — if L1-L4 all PASS
Portfolio Cycle Close (after Launch Marker):
→ Create Portfolio CHANGELOG (L5)
→ Create portfolio git tag
→ Update PORTFOLIO.md
→ Portfolio Cycle Close (ADR-0314)
## Portfolio PC{N} Milestone M{n} — {date}
### Shipped
| Project | Version | Key Deliverables |
|---------|---------|-----------------|
| claire-web-app | v4.0.0 | Daniel Parity: commands, portfolio view, KG search |
| engine-gateway | v2.0.0 | User context injection, dual auth |
| knowledge-gateway | v4.0.0 | Multi-user KB, Supabase JWT |
### New Integration Capabilities
- [Describe new cross-component flows now working]
### Portfolio SIT Results
- Tier 2 scenarios: N/N PASS
- Link: gsd-portfolio/.ACE/sit/portfolio-sit-pc{N}.md
### Portfolio UAT Results
- Journeys: N/N PASS
- Link: gsd-portfolio/.ACE/uat/portfolio-uat-pc{N}.md
gsd-portfolio/.ACE/
├── roadmap/ (ADR-0314)
├── prd/ (ADR-0314)
├── architecture/ (ADR-0314)
├── allocation/ (ADR-0314)
├── sit/ (NEW — ADR-0316)
│ └── portfolio-sit-{cycle-id}.md
├── uat/ (NEW — ADR-0316)
│ └── portfolio-uat-{cycle-id}.md
└── cycle-history/ (ADR-0314, extended)
└── {cycle-id}-close.md (now includes Launch Marker metadata)
ADR-0316: Portfolio Acceptance Criteria and Release Gates
Status: Accepted Date: 2026-03-06 Context: Extends ADR-0314 — Portfolio Cycle was missing concrete acceptance criteria, cross-component SIT gate, Portfolio UAT gate, and a defined release/launch strategy.
Context
Problem / Why
ADR-0314 defined the Portfolio Cycle lifecycle (Planning P0-P4 → GSD Execution → Portfolio Milestone Review → Portfolio Cycle Close) but left Portfolio Milestone Review without concrete acceptance criteria. Specifically:
-
No portfolio-level “done” definition — what does it mean for a portfolio milestone to be complete? Per-project audits exist (ADR-0814, ADR-0818) but no portfolio-level aggregation gate.
-
Tier 2 SIT scenarios orphaned —
SIT-SCENARIOS.mddefines cross-component scenarios (SIT-INT-01/02/03) but they are not enforced as a gate at Portfolio Milestone Review. -
No Portfolio UAT gate — per-project UAT exists (ADR-0814) but no integrated user journey validation across multiple projects.
-
No release strategy at portfolio level — ADR-0805 covers per-project release but doesn’t define when/how portfolio-level milestones are announced or tagged.
Constraints
- Must be backward compatible with per-project release (ADR-0805) and per-project SIT/UAT (ADR-0818, ADR-0814).
- Portfolio coordinator remains read-only for project
.planning/; writes only togsd-portfolio/.ACE/. - Portfolio review must not block per-project releases — projects ship independently.
- Consistent with ADR-0314 principles P6 (Portfolio Coordination), P7 (Top-Down Decomposition), P8 (Dependency-First Sequencing).
Decision
Portfolio Acceptance Criteria Framework
A portfolio milestone is DONE when ALL of the following conditions are PASS:
| Layer | Gate | Source Evidence | Level |
|---|---|---|---|
| L1 | All projects in milestone allocation have audit PASSED | Per-project v{version}-MILESTONE-AUDIT.md | Hard |
| L2 | All projects have git tag + deployed to production | Per-project STATE.md (version, deployment) | Hard |
| L3 | Portfolio SIT Gate (Tier 2 cross-component) | gsd-portfolio/.ACE/sit/portfolio-sit-{cycle-id}.md | Hard |
| L4 | Portfolio UAT Gate (integrated user journey) | gsd-portfolio/.ACE/uat/portfolio-uat-{cycle-id}.md | Hard |
| L5 | Portfolio CHANGELOG created + portfolio tag applied | gsd-portfolio/PORTFOLIO-CHANGELOG.md, git tag | Soft (required for cycle close) |
L1-L4 must all PASS before Portfolio Launch Marker is created. L5 is required to proceed to Portfolio Cycle Close.
Portfolio SIT Gate (Tier 2)
Trigger: After all projects in the milestone allocation are deployed to staging.
Definition of PASS:
- All Tier 2 scenarios in
SIT-SCENARIOS.mdscoped to this milestone have staging URLs and PASS - SIT report created:
gsd-portfolio/.ACE/sit/portfolio-sit-{cycle-id}.md - Verdict:
PASS/FAIL/PARTIALPARTIALaccepted only if failing scenario has an approved waiver with documented reason
Scenarios per milestone (PC1):
| Milestone | Scenarios | Gate |
|---|---|---|
| M1 (Daniel Parity) | SIT-INT-01 (WA → EG), SIT-INT-02 (EG → KG proxy) | Hard |
| M2 (Multi-User Foundation) | SIT-INT-01, SIT-INT-02, SIT-INT-03 (Auth Chain Supabase JWT) | Hard |
| M3 (Org Room Structure) | SIT-INT-01, SIT-INT-02, SIT-INT-03 + new room scenarios | Hard |
Report template: gsd-portfolio/.ACE/sit/portfolio-sit-{cycle-id}.md
Portfolio UAT Gate
Trigger: After Portfolio SIT Gate PASS.
Definition of PASS:
- Daniel runs integrated user journeys on staging covering all milestone scope
- All “happy paths” for the portfolio milestone verified
- UAT report created:
gsd-portfolio/.ACE/uat/portfolio-uat-{cycle-id}.md - Verdict:
PASS/FAIL/DEFERRED-WITH-REASON
Integrated user journeys per milestone:
| Journey ID | Description | Milestone | Components |
|---|---|---|---|
| J1 | Login → Chat → /claire:status command → Engine Dashboard view | M1, M2, M3 | claire-web-app + engine-gateway |
| J2 | Chat → KG Search query → results rendered in chat | M1, M2, M3 | claire-web-app + knowledge-gateway |
| J3 | New user signup → onboarding → isolated chat context | M2, M3 | claire-web-app + knowledge-gateway + engine-gateway |
| J4 | Create room → invite member → room-scoped KB search | M3 | claire-web-app + knowledge-gateway |
Report template: gsd-portfolio/.ACE/uat/portfolio-uat-{cycle-id}.md
Hybrid Release Model
Core principle (P9 — Release First, Review After): Each project releases on demand when its per-project gates pass. Portfolio Milestone Review runs AFTER all projects are released, not before.
Why hybrid:
- Projects that are ready ship immediately — no waiting for slower sibling projects
- Portfolio Launch Marker = official announcement moment when the integrated platform is verified
- Staging may be partial for some time (M2 released, M3 pending) — expected and documented
Portfolio CHANGELOG & Tag Convention
CHANGELOG path: gsd-portfolio/PORTFOLIO-CHANGELOG.md
Section format per milestone:
Git tag format: portfolio/{cycle-id}/m{n}
- Example:
portfolio/pc1/m1,portfolio/pc1/m2
Announce (optional): Update PORTFOLIO.md milestone completion section; send via messaging-agent Telegram if available.
Three New Principles (extends ADR-0314 P6-P8)
| # | Principle | Description |
|---|---|---|
| P9 | Release First, Review After | Projects release on demand; portfolio review does not block individual releases |
| P10 | Cross-Component Verification | Portfolio SIT Tier 2 is a hard gate before Portfolio Launch Marker — integration must be verified end-to-end |
| P11 | Portfolio CHANGELOG | Each portfolio milestone has its own CHANGELOG entry and git tag — cross-project traceability and official launch marker |
.ACE Directory Extension
Commands
| Command | Step | Description |
|---|---|---|
/claire:portfolio-sit | Portfolio SIT Gate | Verify per-project SITs + run Tier 2 scenarios; create report |
/claire:portfolio-uat | Portfolio UAT Gate | Daniel runs integrated journeys; create UAT report |
/claire:portfolio-launch | Portfolio Launch Marker | Create CHANGELOG + portfolio tag + update PORTFOLIO.md |
These are used after /claire:portfolio-review confirms L1-L2 pass, in sequence: portfolio-sit → portfolio-uat → portfolio-launch → portfolio-close.
Consequences
Positive
- Concrete “done” criteria — Portfolio milestone has an unambiguous 5-layer checklist; no subjective interpretation.
- Cross-component integration verified — Tier 2 SIT scenarios enforced at portfolio level; integration failures caught before launch announcement.
- Non-blocking releases — P9 ensures fast projects don’t wait for slow projects; delivery velocity preserved.
- Official launch moment — Portfolio CHANGELOG + tag creates a clear “this integrated platform is live” signal.
- Traceable — Every portfolio milestone has SIT report, UAT report, CHANGELOG, and git tag. Auditable.
Negative
- Portfolio SIT + UAT is manual overhead — ~1-2 hours per milestone for Daniel to run integrated journeys.
- Mitigation: Tier 2 scenarios are scripted; UAT journeys are defined upfront (J1-J4). Reduce friction.
- Portfolio Launch Marker may lag individual project releases — the official “launch” happens after all projects release + portfolio gates pass.
- Mitigation: P9 (Release First) means users get value immediately; Launch Marker is for formal announcement only.
References
Related ADRs
| ADR | Relationship |
|---|---|
| ADR-0314 | Extended with L3-L5 gates and P9-P11 principles |
| ADR-0818 | Per-project SIT gate (L1 prerequisite); Tier 2 scenarios promoted to Portfolio SIT Gate (L3) |
| ADR-0814 | Per-project UAT gate (L1 prerequisite); Portfolio UAT Gate (L4) is cross-project analog |
| ADR-0807 | Per-project release lifecycle; Portfolio Hybrid Model builds on it |
| ADR-0805 | Per-project release strategy; Portfolio CHANGELOG + tag extends it at portfolio level |
| ADR-0309 | Tier 2 SIT scenarios are the runtime verification of ADR-0309 integration contracts |
External References
- Portfolio ACE Cycle Workflow — updated with SIT/UAT/Launch steps
- SIT Scenarios — Tier 2 scenarios governed by this ADR
- ADR-0315 — First instance: PC1 Multi-User Claire Platform
Governance: [ADR-0000: ADR Governance & Lifecycle](../ADR-0000-adr-governance-lifecycle-standard.md)
Decision Made: 2026-03-06 Implementation Status: Active — applies from Portfolio Cycle PC1 Milestone M2 onwards Confidence: High — extends proven per-project gate model (ADR-0818, ADR-0814) to portfolio level; Hybrid release model avoids coupling project delivery timelines