Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
206 commits
Select commit Hold shift + click to select a range
083892f
feat: up afm version
trifonovmixail Sep 12, 2026
3e35081
feat(pipeline): declare the afm file-manager roots contract
trifonovmixail Sep 13, 2026
8cdfc9c
feat: add file_roots module with FileRoot, collect_file_roots, encode…
trifonovmixail Sep 13, 2026
192fd04
feat: re-export FileRoot, collect_file_roots, encode_file_roots from …
trifonovmixail Sep 13, 2026
b8771c0
feat: write AFM_DOCKER_FILE_ROOTS env layer in _build_env_file from h…
trifonovmixail Sep 13, 2026
addbe23
feat: pin info launcher produces no AFM_DOCKER_FILE_ROOTS (structural…
trifonovmixail Sep 13, 2026
3623d46
fix: address code review findings
trifonovmixail Sep 13, 2026
09f8488
fix: delete old env from dockerfile
trifonovmixail Sep 13, 2026
c22ab09
feat: split onboarding cell into questions, survey, participation and…
trifonovmixail Sep 14, 2026
2c90cd6
feat: add minor_version routine to the version cell with facade re-ex…
trifonovmixail Sep 14, 2026
2bb59db
feat: add onboarding action records to the hooks catalog
trifonovmixail Sep 14, 2026
5b0a712
feat: re-export hooks delivery primitives through the hooks facade
trifonovmixail Sep 14, 2026
0140d50
feat: create questions cell structure with module skeletons
trifonovmixail Sep 14, 2026
d591c07
feat: implement Question and QuestionGroup records in the questions cell
trifonovmixail Sep 14, 2026
c90a014
feat: implement SessionAnswers accumulator in the questions cell
trifonovmixail Sep 14, 2026
61026cb
feat: create participation cell structure with module skeletons
trifonovmixail Sep 14, 2026
09d566e
feat: implement ToolDeclaration and ToolContribution participation su…
trifonovmixail Sep 14, 2026
eb09173
feat: implement ToolParticipation mediator with staged per-tool delivery
trifonovmixail Sep 14, 2026
bff704e
feat: create survey cell structure with module skeletons
trifonovmixail Sep 14, 2026
566801e
feat: implement core_questions tree builder in the survey cell
trifonovmixail Sep 14, 2026
432f218
feat: implement survey plan layer with SessionPlan, assembly, and ski…
trifonovmixail Sep 14, 2026
1d456c2
feat: implement Questionnaire survey engine in the survey cell
trifonovmixail Sep 14, 2026
1546a17
feat: create generator cell structure with module skeleton
trifonovmixail Sep 14, 2026
021cee7
feat: implement FileGenerator artifact core with CreatedFile record a…
trifonovmixail Sep 14, 2026
2075d77
feat: verify tool-config generation with attribution and staged-commi…
trifonovmixail Sep 14, 2026
68abeb3
feat: rewrite onboarding facade with three-collaborator InitLogic and…
trifonovmixail Sep 14, 2026
5db8531
feat: add -t/--tool invitation flag to init command with dedup and To…
trifonovmixail Sep 14, 2026
3629963
feat: add end-to-end invited-tool integration tests for the onboardin…
trifonovmixail Sep 14, 2026
726d38a
fix: address code review findings
trifonovmixail Sep 14, 2026
beb337b
fix: address code review findings
trifonovmixail Sep 14, 2026
bfc7ae6
fix: address code review findings
trifonovmixail Sep 14, 2026
b7bbe54
fix: address code review findings
trifonovmixail Sep 14, 2026
d2d734b
fix: address acceptance audit findings in manifests and adapter tests
trifonovmixail Sep 15, 2026
817091f
fix: relocate onboarding tool-contexts usage to the domain facade
trifonovmixail Sep 15, 2026
a8e492d
feat: delete goga history from gitignore
trifonovmixail Sep 16, 2026
42128ca
feat: add onboarding-refactoring topic to history
trifonovmixail Sep 16, 2026
398c0a1
feat: up afm version
trifonovmixail Sep 16, 2026
1bc4ef5
fix: delete old gitignores
trifonovmixail Sep 16, 2026
de605d0
feat: require english file content in workflow prompts
trifonovmixail Sep 16, 2026
abbad1e
feat: add topics hooks zone cell and specs
trifonovmixail Sep 16, 2026
cb91c38
feat: extend the action catalog with the seven topics records
trifonovmixail Sep 16, 2026
47218b0
feat: add topics hooks zone package skeleton and test fixtures
trifonovmixail Sep 16, 2026
8464427
feat: add TopicIdentity to the topics hooks zone
trifonovmixail Sep 16, 2026
adcc817
feat: add the five notification contexts to the topics hooks zone
trifonovmixail Sep 16, 2026
d80de85
feat: add draft holders and amendment views to the topics hooks zone
trifonovmixail Sep 16, 2026
18fcee6
feat: add TopicHooks and the run registry to the topics hooks zone
trifonovmixail Sep 17, 2026
ead8194
feat: wire the enter_topic_todo checkpoint pair
trifonovmixail Sep 17, 2026
496d667
feat: wire the create_topic amendment and creation notification
trifonovmixail Sep 17, 2026
c6b8221
feat: emit the publication pair from publish_topic
trifonovmixail Sep 17, 2026
ba2ad6d
feat: emit topic_switched from switch_topic
trifonovmixail Sep 17, 2026
c0745b2
feat: wire the ensure_topic fast-creation checkpoints and branch facts
trifonovmixail Sep 17, 2026
141fe38
feat: emit topic_deleted per removed target
trifonovmixail Sep 17, 2026
549b712
feat: document the seven topics hook actions
trifonovmixail Sep 17, 2026
9a93d43
feat: verify the cross-cell integration of the topics hooks
trifonovmixail Sep 17, 2026
f4e17fa
fix: address code review findings
trifonovmixail Sep 17, 2026
6865851
fix: address code review findings
trifonovmixail Sep 17, 2026
5489b85
chore: archive the completed add-topics-hooks plan
trifonovmixail Sep 17, 2026
0678147
docs: unify domain hook usages under registering-hooks.md
trifonovmixail Sep 17, 2026
c127de7
chore: bump AFM_VERSION to 1.1.4
trifonovmixail Sep 17, 2026
19719e8
docs: sync mkdocs traceability for the 2.0.0 cells and cover init too…
trifonovmixail Sep 17, 2026
d2a1861
feat: up afm version
trifonovmixail Sep 17, 2026
751c2b9
feat: up afm version
trifonovmixail Sep 18, 2026
d76b44e
feat: add pipeline hooks zone cell and specs
trifonovmixail Sep 18, 2026
ad93534
feat: add the three pipeline records to the hooks catalog
trifonovmixail Sep 18, 2026
2a7602a
feat: add pipeline hooks zone package skeleton and test scaffolding
trifonovmixail Sep 18, 2026
e0f5827
feat: add pipeline hooks zone identity models with contract and logic…
trifonovmixail Sep 18, 2026
94bb025
feat: add pipeline hooks zone run-event contexts with contract and lo…
trifonovmixail Sep 18, 2026
e50a693
feat: add pipeline hooks zone authored-wins overlay with contract and…
trifonovmixail Sep 18, 2026
25e57fb
feat: add pipeline hooks zone amendment view with contract and logic …
trifonovmixail Sep 18, 2026
1bdb40f
fix: permissions for afm home
trifonovmixail Sep 18, 2026
4645b52
feat: add pipeline hooks checkpoint surface with contract and logic t…
trifonovmixail Sep 18, 2026
dc0e11f
feat: add PipelineCard provenance field with contract and logic tests
trifonovmixail Sep 18, 2026
fb579a9
feat: compose the pipeline card through the hooks amendment layer
trifonovmixail Sep 18, 2026
3fb5a3c
feat: wire the run form through the pipeline hooks amendment layer
trifonovmixail Sep 18, 2026
fc39ef5
feat: render the card tools line and clean hard-amendment errors in t…
trifonovmixail Sep 18, 2026
7632af0
feat: verify the wired pipeline hooks flows end to end
trifonovmixail Sep 18, 2026
8d72268
fix: address code review findings
trifonovmixail Sep 18, 2026
c716655
chore: complete the add-pipeline-hooks plan and accept the result
trifonovmixail Sep 18, 2026
87a44e1
docs: name the hard amend_workflow failure in the automation exit-cod…
trifonovmixail Sep 18, 2026
a48b374
chore: bump AFM_VERSION to 1.1.13
trifonovmixail Sep 21, 2026
b81720b
docs: add the add-hooks-to-build discovery and planning history
trifonovmixail Sep 21, 2026
b14ffc5
feat: add build hooks zone cell and specs
trifonovmixail Sep 21, 2026
a74646f
feat: rewrite the build config model to the two-part form (Task 1)
trifonovmixail Sep 21, 2026
858aadb
feat: add the five build action catalog records (Task 2)
trifonovmixail Sep 21, 2026
927f009
fix: failed build
trifonovmixail Sep 21, 2026
8af25cd
feat: ralphex launcher flag table with external-review flags (Task 3)
trifonovmixail Sep 21, 2026
2cfcafa
feat: build hooks zone skeleton with test scaffolding (Task 4)
trifonovmixail Sep 21, 2026
4eff397
feat: zone fact vocabulary facts.py with facade exports (Task 5)
trifonovmixail Sep 21, 2026
133828b
feat: zone read-only contexts contexts.py with facade exports (Task 6)
trifonovmixail Sep 21, 2026
6812f6e
feat: build hooks checkpoint surface events.py with facade completion…
trifonovmixail Sep 21, 2026
c0e0e99
feat: run settings resolution run_settings.py with pure resolver (Tas…
trifonovmixail Sep 21, 2026
7bb78ed
feat: pass options composition pass_options.py with pure composer (Ta…
trifonovmixail Sep 21, 2026
5439944
feat: review config semantic validation review_config.py with setting…
trifonovmixail Sep 21, 2026
c55b7d9
feat: ralphex defaults sync with finalize materialization ralphex_run…
trifonovmixail Sep 21, 2026
413dd10
feat: ralphex config generation ralphex_config.py with external revie…
trifonovmixail Sep 21, 2026
fdcb2b0
feat: pass executor re-signature build_pass.py carries RunSettings (T…
trifonovmixail Sep 21, 2026
2851f80
feat: plan relocation returns RelocationOutcome plan_relocation.py (T…
trifonovmixail Sep 21, 2026
d465594
feat: 12-step two-pass build cycle build.py rewrite with checkpoints …
trifonovmixail Sep 21, 2026
8ecb616
feat: in-container CLI surface without retired flags __main__.py (Tas…
trifonovmixail Sep 21, 2026
ba899f0
feat: host launcher two-part surface without retired flags goga/comma…
trifonovmixail Sep 21, 2026
f011781
feat: onboarding two-part build emission generator.py (Task 18)
trifonovmixail Sep 21, 2026
e9a9356
feat: integration tests for build cycle and end-to-end flows (Task 19)
trifonovmixail Sep 21, 2026
8abc16c
fix: address code review findings
trifonovmixail Sep 21, 2026
51525e4
chore: complete the add-hooks-to-build plan and accept the result
trifonovmixail Sep 21, 2026
1762f27
chore(memory): update project memory
trifonovmixail Sep 21, 2026
769f116
test: review-pass failure keeps plan for resume
trifonovmixail Sep 21, 2026
ef451f7
chore(memory): update project memory
trifonovmixail Sep 21, 2026
e32b505
feat: add config hooks zone cell and specs
trifonovmixail Sep 22, 2026
18bb98a
feat: add config/amend_config hard action to hooks catalog
trifonovmixail Sep 22, 2026
9cfe244
feat: rename ProjectConfig field lang to language with facade completion
trifonovmixail Sep 22, 2026
5720739
feat: add config hooks zone scaffold with amendments view and buffer
trifonovmixail Sep 22, 2026
51613a0
feat: add config hooks overlay data layer with descriptor table
trifonovmixail Sep 22, 2026
2bac625
feat: implement merge_config_amendments deterministic config overlay …
trifonovmixail Sep 22, 2026
34b77ec
feat: add ConfigHooks checkpoint delivery for config amend_config action
trifonovmixail Sep 22, 2026
374a204
feat: mark Task 6 logic tests complete for ConfigHooks checkpoint del…
trifonovmixail Sep 22, 2026
7d74ac5
feat: add config hooks zone facade with seven contract names
trifonovmixail Sep 22, 2026
0f1a95f
feat: deliver config amend_config checkpoint in five common-shape con…
trifonovmixail Sep 22, 2026
631fab2
feat: deliver config amend_config checkpoint in lint and topics consu…
trifonovmixail Sep 22, 2026
cebed86
feat: deliver config amend_config checkpoint in usages status and sync
trifonovmixail Sep 22, 2026
5c71981
feat: add config hooks passthrough integration tests and final verifi…
trifonovmixail Sep 22, 2026
0cc9495
fix: address code review findings
trifonovmixail Sep 22, 2026
2014dc5
fix: address code review findings
trifonovmixail Sep 22, 2026
df27046
docs: sync manifests and usages with implemented checkpoint failure h…
trifonovmixail Sep 22, 2026
6fd779d
chore(memory): update project memory
trifonovmixail Sep 22, 2026
d8bf696
feat: add build.review.max_iterations review-pass iteration cap
trifonovmixail Sep 22, 2026
1d0c468
feat: add max_iterations to review config
trifonovmixail Sep 22, 2026
cab1c68
docs: add topic-influence contracts and pipeline artifacts
trifonovmixail Sep 23, 2026
e642dbc
feat: add BoardEntry, aggregate_topic_board, and the collect hosts fi…
trifonovmixail Sep 23, 2026
5d2e15c
feat: export BoardEntry and aggregate_topic_board from the goga/topic…
trifonovmixail Sep 23, 2026
ddc03d9
feat: add the create_topic todo acquisition ladder with todo_from_stdin
trifonovmixail Sep 23, 2026
c464a7f
feat: add the TestBoardPipeline integration tests for the collect-to-…
trifonovmixail Sep 23, 2026
7706baa
feat: add the three board renderers — default-view grid, audit rows, …
trifonovmixail Sep 23, 2026
2d7639a
feat: add the board subcommand two-view surface — --host, --per-host,…
trifonovmixail Sep 23, 2026
464740b
feat: add the create subcommand optional-value --todo mapping into th…
trifonovmixail Sep 23, 2026
7f9247d
feat: export render_topic_host_rows and render_board_json from the go…
trifonovmixail Sep 23, 2026
6b4b3a5
feat: add the TestTopicsBoardFlow integration tests — the real CLI bo…
trifonovmixail Sep 23, 2026
2ecfb0c
fix: address code review findings
trifonovmixail Sep 23, 2026
abc2c7a
fix: address code review findings
trifonovmixail Sep 23, 2026
bf33c1f
fix: correct the board host signature default in the topics command m…
trifonovmixail Sep 23, 2026
52e114c
chore(memory): update project memory
trifonovmixail Sep 23, 2026
72f8280
fix: render board hosts one per line, capitalize headers, and scope t…
trifonovmixail Sep 23, 2026
ae80aab
chore(memory): update project memory
trifonovmixail Sep 23, 2026
ce143a8
docs: add topics-clear contracts and pipeline artifacts
trifonovmixail Sep 23, 2026
d27eac2
chore: bump AFM_VERSION to 1.1.17
trifonovmixail Sep 23, 2026
4a4c7a4
feat: pointer-model deletion assembly and the clear resolver
trifonovmixail Sep 23, 2026
bd12f47
feat: board primary own-branch filter and topics display filters
trifonovmixail Sep 23, 2026
1fc7e1c
feat: topics board --topic filter and the clear subcommand
trifonovmixail Sep 23, 2026
cd7b2c7
feat: re-pin the pointer-model integration scenarios
trifonovmixail Sep 23, 2026
1c9e42a
fix: address code review findings
trifonovmixail Sep 23, 2026
f302d2d
chore: archive the completed topics-clear plan
trifonovmixail Sep 23, 2026
8f3c449
chore(memory): update project memory
trifonovmixail Sep 23, 2026
4bbeec9
feat: add debug info to build after script
trifonovmixail Sep 23, 2026
db37fc7
feat: decompose subtasks into separate topics in task-by-proposing
trifonovmixail Sep 23, 2026
cf40964
feat: add hooks zone specs to the schema domain
trifonovmixail Sep 23, 2026
4863c47
feat: add the schema.amend_cell record to the action catalog
trifonovmixail Sep 23, 2026
6665051
feat: add schema hooks zone skeleton and test scaffolding
trifonovmixail Sep 23, 2026
5e664c8
feat: add CellFacts and DependencyFacts to the schema hooks zone
trifonovmixail Sep 23, 2026
06c6a43
feat: add CellAmendment to the schema hooks zone
trifonovmixail Sep 23, 2026
4887d75
feat: add ToolContribution and merge_cell_contributions to the schema…
trifonovmixail Sep 23, 2026
964edef
feat: add SchemaHooks checkpoint surface and complete the schema hook…
trifonovmixail Sep 23, 2026
d38fedf
feat: deliver the cell-amendment checkpoint in the schema walk and pl…
trifonovmixail Sep 23, 2026
04bd7a0
feat: convert every schema_logic error into a clean CLI failure and d…
trifonovmixail Sep 23, 2026
e813fc8
feat: add the schema entry-path integration tests and complete the fi…
trifonovmixail Sep 23, 2026
04e5098
fix: address code review findings
trifonovmixail Sep 23, 2026
2704301
chore: archive the completed add-hooks-to-schema plan
trifonovmixail Sep 23, 2026
7640908
chore(memory): update project memory
trifonovmixail Sep 23, 2026
18da95a
goga: create topic fix-rm-ralphex-dir
trifonovmixail Sep 24, 2026
71e10a4
feat: up afm version
trifonovmixail Sep 24, 2026
ceb05d5
fix: stop pytest runs from re-creating .ralphex in the repo root
trifonovmixail Sep 24, 2026
330981e
goga: record the fix-rm-ralphex-dir resolution in history
trifonovmixail Sep 24, 2026
2f53ad4
Merge branch 'fix-rm-ralphex-dir' into release/2.0.0
trifonovmixail Sep 24, 2026
169a907
chore(memory): update project memory
trifonovmixail Sep 24, 2026
85b16ed
fix: persist goga-change plan and report artifacts in the history tree
trifonovmixail Sep 24, 2026
698eccd
goga: record the change artifact persistence fix in history
trifonovmixail Sep 24, 2026
5c9bf08
fix: delete test artifact
trifonovmixail Sep 24, 2026
6f36f8f
feat: up afm version
trifonovmixail Sep 24, 2026
4b7c9fb
feat: add usages hooks zone cell and specs
trifonovmixail Sep 25, 2026
13d1be0
feat: grow the action catalog with the four usages records
trifonovmixail Sep 25, 2026
b9eed37
feat: add usages hooks zone test package scaffolding
trifonovmixail Sep 25, 2026
e0d1baf
feat: add the eight usages hooks zone fact entities
trifonovmixail Sep 25, 2026
2a90e61
feat: add the four usages hooks zone context entities
trifonovmixail Sep 25, 2026
5a4018f
feat: add the usages hooks zone checkpoint surface
trifonovmixail Sep 25, 2026
e575f6f
feat: add the usages hooks zone facade
trifonovmixail Sep 25, 2026
44ba756
feat: sync operation owns its run-level moments
trifonovmixail Sep 25, 2026
fc70583
feat: status operation owns its moments and the drift projection
trifonovmixail Sep 25, 2026
370a6a9
feat: add cross-operation usages moment integration tests
trifonovmixail Sep 25, 2026
749d192
fix: address code review findings
trifonovmixail Sep 25, 2026
c8c9fd9
chore: archive the completed add-hooks-to-usages plan
trifonovmixail Sep 25, 2026
80be15a
chore(memory): update project memory
trifonovmixail Sep 25, 2026
a191de3
feat: update afm and codex version + add codex-as-claude script
trifonovmixail Sep 25, 2026
146522e
feat: proxy pipeline run options through cmd and drop credential mounts
trifonovmixail Sep 25, 2026
9f74f7a
fix: drop broken resolve_credential_mounts imports from launchers
trifonovmixail Sep 25, 2026
2b1c318
fix: run build in workflow
trifonovmixail Sep 25, 2026
32b25d2
feat: run_pipeline explicit-parameter channel (workflow/no_workflow/s…
trifonovmixail Sep 25, 2026
a92af06
feat: describe_pipeline skip merge (pre-merge decision, merged delivery)
trifonovmixail Sep 25, 2026
662e8a4
feat: pipeline_cli dual-mode -s and workflow threading
trifonovmixail Sep 25, 2026
9c5f465
feat: build launcher no-credential-mounts guard (Task 4)
trifonovmixail Sep 25, 2026
5b7fb30
feat: run launcher argv channel + credential-mount removal (Task 5)
trifonovmixail Sep 25, 2026
410e742
feat: run_pipeline_info_container card-form skip (Task 6)
trifonovmixail Sep 25, 2026
137ce1c
feat: pipeline click card-form skip dispatch + help texts (Task 7)
trifonovmixail Sep 25, 2026
b79ef18
feat: integration tests + cross-cell test migration (Task 8)
trifonovmixail Sep 25, 2026
dc35a7e
fix: address code review findings
trifonovmixail Sep 25, 2026
2dfa365
fix: address code review findings
trifonovmixail Sep 25, 2026
4a0f6c1
fix: align CODEMANIFESTs with implementation (acceptance review)
trifonovmixail Sep 25, 2026
734dfd9
chore: archive the completed pipeline-host-to-docker-values plan
trifonovmixail Sep 25, 2026
83fda26
chore(memory): update project memory
trifonovmixail Sep 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 0 additions & 8 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,3 @@
# goga: ralphex config managed by goga
.goga/prompts/*.txt
.goga/agents/*.txt
.goga/config

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[codz]
Expand Down Expand Up @@ -223,6 +218,3 @@ __marimo__/
docs/plans/
docs/design/
docs/superpowers/

# Goga
.goga/history
19 changes: 12 additions & 7 deletions .goga/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,21 @@ language: python
image: qarium/goga:latest
dockerfile: Dockerfile

.base-ref: &base-ref release/2.0.0

.claude-env: &claude-env
ANTHROPIC_MODEL: opus
ANTHROPIC_BASE_URL: "https://api.z.ai/api/anthropic"

build:
task_executor:
agent: claude
env:
<<: *claude-env
ANTHROPIC_DEFAULT_OPUS_MODEL: "glm-5.1"
review_executor:
agent: claude
env:
<<: *claude-env
ANTHROPIC_DEFAULT_OPUS_MODEL: "glm-5.1"
review:
agent: claude
base_ref: release/1.3.0
base_ref: *base-ref
max_iterations: 5
env:
<<: *claude-env
ANTHROPIC_DEFAULT_OPUS_MODEL: "glm-5.3[1m]"
Expand All @@ -26,6 +28,9 @@ pipeline:
<<: *claude-env
ANTHROPIC_DEFAULT_OPUS_MODEL: "glm-5.3[1m]"

topics:
base_ref: *base-ref

lint:
ignore:
- build/
Expand Down
138 changes: 138 additions & 0 deletions .goga/history/2026/add-hooks-to-build/adr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
---
status: accepted
---

# Open the build domain over a stable two-pass cycle with a verdict-collecting gate

The build domain joins the hooks platform with five additive catalog actions —
the hard `validate_build` gate plus the soft notifications `build_started`,
`pass_started`, `pass_completed`, `build_completed` — delivered by a per-domain
hooks zone fully symmetric with the open domains (pipeline, topics), and the run
model is restructured into a stable cycle (always a tasks pass then a review
pass as two separate ralphex invocations) so the moment set has a uniform
contract to describe. This ADR records the technical decisions of the discovery
interview (rounds q1–q8); the PRD at `prd.md` has been aligned to them.

## Decision

### Stable cycle and the two-part settings model

- Every non-skipped run is exactly two ralphex invocations: the tasks pass
(`--tasks-only`, the root agent's wrapper, the root env as the tasks-pass env
layer) then the review pass (`--review`, the review agent's wrapper, the
review env layer, review-scoped knobs). The combined full pass is removed; a
failed tasks pass never launches the review pass; the run's exit code is the
last executed pass's; plan relocation happens only on success.
- The task env leaves the host-side container env-file and becomes the
tasks-pass env layer — the review pass never receives it (secret-safe, never
printed).
- Settings divide into two stage-bound parts with **no universal category**
(supersedes the PRD line "universal build options apply to every pass"):
the `build` section root carries the tasks-pass settings (`agent`, `env`,
`max_iterations`, `session_timeout`, `idle_timeout`, `wait`); the
`build.review` key carries the review-pass settings (`agent`, `env`,
`roles`, `base_ref`, `strategy`, `finalize`, `additional`, plus the session
knobs). Every unset review value inherits the root value; unset at both
levels → omit. `additional.agent` inherits `review.agent`.
- Review strategy: `build.review.strategy` is `full` (internal agents +
external review), `medium` (internal only — the default, reflecting goga's
current effective behavior; goga explicitly disables external review), or
`short` (external only — the review pass runs ralphex `-e` under the
additional agent's wrapper). `skip` remains the tri-state all-or-nothing
kill switch (CLI > config), orthogonal to strategy.
- External review block `build.review.additional`: `agent` (threads to
ralphex's external-review surface — `external_review_tool` `codex|custom`,
`custom_review_script`), `patience` (`--review-patience`, 0 = disabled),
`max_iterations` (`--max-external-iterations`; 0 = ralphex auto:
`max(3, max_iterations/5)`). No `enabled` key — strategy encodes on/off.
Replaces the `codex_review` setting.
- `build.review.finalize` is a user-authored string prompt for the final
review step (finalize is a ralphex review agent, `finalize.txt`). When set,
goga materializes the ralphex files for the step and enables it
(`finalize_enabled = true`) during the defaults sync; when unset the step
stays at ralphex's default (off). Replaces `skip_finalize` (bool mirror);
the `--skip-finalize` CLI flag is removed with no replacement (a prompt is
config material).
- The worktree setting is removed outright from CLI and config. A stale
`worktree` key in an existing config is not special-cased — the config
loader extracts known fields only and ignores unknown keys (verified against
the loader contract). The host-side two-pass × worktree guard is removed.
- `skip_manifest_check` stays a CLI-only pre-check toggle, outside both parts.
- CLI surface: no new flags. `--worktree` and `--skip-finalize` die;
`--review-patience` remains and addresses `additional.patience`; the
remaining existing flags address the part(s) where their knob lives.

### Hooks surface

- Five additive catalog records under domain `build`; no existing record
changes. A per-domain hooks zone owned by the build domain consumes the
`goga/hooks` facade; one `HookRegistry` per run is shared by all five
checkpoints.
- The gate is a **staged per-tool walk over the facade primitives, run to
completion**: every subscribed tool's validation hooks run (no early stop);
each hook either approves silently or vetoes with a reason; a crashing hook
counts as that tool's veto with the crash reason. All vetoes merge into one
clean error listing every violation (tool, hook, reason); exit code 1; no
pass launches; the plan is not relocated; no started/pass/completed events
fire. The gate modifies nothing. This is a deliberate, domain-local
deviation from the platform's hard-action semantics ("stop at the first
failure") — verdict collection requires running every tool.
- The four notifications use the standard fire-and-forget platform emission
(soft: a failing hook warns naming tool, action, reason).
- Contexts (semantic vocabulary; shapes are contract territory): a uniform
envelope (`plan`, `work` — branch + topic when hosted, branch-only
otherwise, `"unknown"` branch fallback — and `dry_run`) plus moment facts.
The gate and `build_started` carry both resolved parts (env presence as
names only). The pass contexts carry the stage, executor, pass option facts
(including strategy/additional/finalize facts on the review pass), and the
actual exit code. `build_completed` carries the final exit code, the
executed stage sequence, the relocation outcome, and the work's **current**
history statuses at the completion moment — recomputed after the relocation
attempt (moved or not; branch-only form delivers an empty list). Contexts
carry the full `finalize` prompt text when configured. All contexts are
read-only; env values are never delivered anywhere.
- Facts resolve in the operation before delivery from the operation's own data
and the history store; no git reads happen at a checkpoint moment.

## Considered options

- **Gate via plain `emit_hook_event` (hard)** — rejected: platform hard
semantics stop at the first failure, violating full verdict collection.
- **Changing the platform hard class to collect-all** — rejected: touches the
pipeline domain's contract; out of scope. The staged per-tool walk precedent
(`per-tool-delivery`) already exists for domains that need per-tool
outcomes.
- **Keeping a universal-options category** — rejected by the user: with
always-two executors, every setting belongs to one of the two parts;
inheritance preserves the set-once ergonomics.
- **`skip_finalize` as a bool (negative mirror or positive tri-state)** —
rejected after learning finalize is a ralphex review agent (`finalize.txt`)
that can carry a user prompt: the prompt form lets the author write the
final review instructions, with goga preparing the files.
- **An `enabled` key inside `additional`** — rejected: redundant once
`strategy` (full | medium | short) encodes external review on/off.
- **Nesting review under `review_executor` (keeping today's block names)** —
rejected in favor of the flattened form (root = task settings, `review` =
review settings): nesting makes the inheritance-from-root mechanism obvious
to the configuring user.
- **Two ADRs** (cycle restructure vs domain opening) — rejected: one decision
system; the moment set is defined over the stable cycle.

## Consequences

- Breaking changes shipped without compatibility paths in the major-version
window (PRD C7): the combined full pass, the `task_executor` /
`review_executor` block names, the `worktree` flag and key, the
`--skip-finalize` flag, and the `codex_review` setting all disappear.
- The PRD's "universal build options apply to every pass" sentence and the
out-of-scope line "review_executor keeps its shape" are superseded by this
ADR; the PRD has been edited to match.
- The default strategy `medium` means goga explicitly disables external
review unless `full`/`short` is configured — deliberate (reflects the
current effective state), recorded here so it is not read as an accident.
- Open questions deferred to the architecture stage: cell boundaries and
contract shapes for the hooks zone (context types, signatures, the gate
walk's composition over the facade); the exact threading of
`additional.agent` onto ralphex's external-review surface
(`external_review_tool` / `custom_review_script`); the file form of the
finalize materialization.
Loading
Loading