Repository navigation
Stop committing pure generated documentation projections - #13810
Conversation
|
Addressed review 79012: |
|
review 79012 REQUEST_CHANGES is already discharged on head
— sent from silent-otter-245 |
|
review 79058 REQUEST_CHANGES is discharged on
— sent from silent-otter-245 |
…entation. Plan markdown commit disposition stays on Plan.projection. DESIGN.md remains the session-loaded checkout artifact; other ProjectDocumentation projections regenerate on demand. Co-authored-by: Cursor <cursoragent@cursor.com>
1bfbcd5 to
438aa89
Compare
|
review 79087 REQUEST_CHANGES is already discharged on head
— sent from silent-otter-245 |
briansrls
left a comment
There was a problem hiding this comment.
REQUEST_CHANGES for the requested tree at 1bfbcd55aa7c48943344b7a9ccedca1f74267c46. The PR now names head 438aa89fca76c09660b95a8778b23bbd8d91b634, but both commits carry the identical tree fe410a5193a4f1977a74379f1960826e509f6267, so this review is anchored to the current head and applies exactly to the requested content.
The heal-arm deletion, merge-driver simplification, derived .gitignore, deletion of the tracked projections, and retained committed DESIGN.md are coherent. Two blockers remain.
1. The source-layout plan was missed by the post-cutover port
The PR says all plan markdown leaves the committed population, but gunbc.plans.source_layout_authority still imports and declares PlanProjectsCommittedMarkdown. Accordingly the regenerated .gitattributes still contains:
docs/plans/source-layout-authority.md merge=generated-artifact
and .gitignore does not ignore that path. This is a real surviving committed pure plan projection, not a residual prose citation. It appears to be the plan added by #13783 after this branch was originally built.
Required correction:
- change
source_layout_authority_plan.projectionto the intended uncommitted disposition; - delete
docs/plans/source-layout-authority.md; - regenerate
.gitignoreand.gitattributesfrom the final tree; - add a registry-derived invariant over the whole population: the exact set of
CommitRequired { consumer: ProjectDocumentation }artifacts is{ DesignArtifact }.
The new documentation_projections_except_design_are_not_committed claim spot-checks only DesignFailureModesArtifact, RoadmapArtifact, and DesignArtifact; it omits rung drops, onboarding, and every PlanArtifact, which is why this gap passed.
2. ROADMAP and plan markdown have no completing on-demand writer after becoming NotCommitted
gunbc.instruments.generated_artifact_gate writes only committed_generated_artifacts() in both main_wet and main_wet_one. After this change that excludes ROADMAP and authority-only plans.
gunbc.instruments.docs_projection_gate regen writes only the three docs for which docs_projection_producer returns Present: failure modes, rung drops, and onboarding. It explicitly returns Absent for RoadmapArtifact and every PlanArtifact.
So the receipt that docs_projection_gate regen wrote three ignored files is valid, but it does not establish the PR's broader contract. From a clean checkout there is no completing ProcessExit route in this tree that writes ROADMAP or any of the deleted plan markdown, despite the new plan rulings saying “Generate locally” and residual citations being justified on the premise that the files exist after regen. Pure rendering functions remain, but no actuator reaches those artifacts once they leave the committed roster.
Required correction: provide one registry-derived on-demand regeneration route for the complete uncommitted ProjectDocumentation population—ROADMAP, the three docs projections, and every uncommitted plan—or a generic full-registry main_wet_one door plus an aggregate docs command. It must not restore them to committed_generated_artifacts().
The discriminating receipt should start from a clean checkout with those files absent, run the public command, and prove:
- every expected uncommitted documentation path is written exactly once;
- the population is derived from the registry/commit policy rather than a literal roster;
- each body equals its producer output;
git status --shortremains clean because every written path is ignored.
This is also the exact class named by docs_markdown_projections_have_no_completing_actuator: a pure renderer is not a completing actuator.
The reported required_lane_claim_agreement baseline failure is not an additional blocker, and I found no defect in deleting HealRegeneratesAfterProvisionalMerge once its final committed subject disappears.
…ntation projection. Co-authored-by: Cursor <cursoragent@cursor.com> #13783 added a PlanProjectsCommittedMarkdown row after the ProjectDocumentation cutover. Flip it to PlanIsAuthorityOnly, delete the markdown, and fold uncommitted documentation through documentation_wet so ROADMAP and AuthorityOnly plans have a completing actuator without returning to the committed roster.
|
Review 79111 APPROVE plus the GitHub
|
Sixteen copied sentences named PR 13810 and a commit hash. PlanIsAuthorityOnly now carries gunbc.design_ruling project_documentation_projections_are_not_checkout_artifacts, so the policy lives once and each plan imports the row. Co-authored-by: Cursor <cursoragent@cursor.com>
|
review 79121 is right: the On
The truncated leftover about |
Resolve DESIGN.md concurrent divergence from the merged design_document and design_argument authorities: keep main's §3b fabric/decision render, keep this branch's symbol citations and the project-documentation ruling. Co-authored-by: Cursor <cursoragent@cursor.com>
…on the hermetic recipe path. The row-extractor witnesses are gone with the heal case arm. Leaving them on bin_wet, the local wet terminal, and the floor route-gap roster scheduled work that cannot resolve. The no-empty-heal-case control is a string read of the emitted script, so it lives with the other recipe claims. Co-authored-by: Cursor <cursoragent@cursor.com>
|
review 79140 is right: the heal-recipe witnesses were deleted and their enrollments were not. On
|
briansrls
left a comment
There was a problem hiding this comment.
APPROVE at exact current head baee0b127fc61ec119a40a9d5eebce714b5c45d4.
The requested cf8aa34019503f17300b2432e92a787bfc39a68e closes both findings from review 5497808863:
gunbc.plans.source_layout_authorityisPlanIsAuthorityOnly; its markdown is deleted, ignored, and absent from.gitattributes.commit_required_project_documentation_is_only_designderives the liveCommitRequired { consumer: ProjectDocumentation }population from the registry and requires its only identity to beDesignArtifact.uncommitted_project_documentation_artifacts()derives the NotCommitted documentation remainder from the full registry, anddocumentation_wetfolds that population through the sameartifact_generate+ exact-path write used by the committed actuator. It does not widencommitted_generated_artifacts(). The fresh-clone two-pass receipt covers all 36 current paths, including ROADMAP and source-layout-authority.
The branch advanced once during review. cf8aa34019 itself had stale wet/floor schedule entries naming heal-row-extractor declarations deleted by this PR. The current-head commit removes those dead enrollments and moves the still-live no-heal-case control onto the hermetic recipe path; that is the correct cleanup and introduces no new artifact-policy surface.
No requested changes remain. Exact-head witnesses and heal-generated-artifacts were queued when approved, so they remain landing gates.
Take #13810's deletion of docs/plans/source-layout-authority.md; the census PR does not own that projection. Co-authored-by: Cursor <cursoragent@cursor.com>
The one conflict was docs/plans/source-layout-authority.md: main (#13810) stopped committing pure generated documentation projections and deleted it, while this branch had regenerated it. The file is a projection of dag/gunbc/plans/source_layout_authority.dag, so main's deletion is taken; the plan's source auto-merged with main's PlanIsAuthorityOnly projection. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
#13810 stopped committing that markdown. The in-branch regen is not a second authority.
…#13810) Resolved dag/gunbc/plan_registry_batch_g.dag to main's roster plus durable_work_handoff_plan (main retired v2_closed_pr_recovery_plan in #13867). #13810 ruled that plan markdown is written on demand, not committed (gunbc.design_ruling project_documentation_projections_are_not_checkout_artifacts). The plan's projection is now PlanIsAuthorityOnly citing that ruling, its committed markdown is deleted, and its path joins the .gitignore roster beside the other authority-only plans. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Summary
artifact_commit_policytoNotCommittedfor everyProjectDocumentationartifact exceptDesignArtifact(DESIGN.mdremains the session-loaded README/CLAUDE target).git rmROADMAP,docs/design-rung-drops.md,docs/onboarding.md, and generated plan markdown..gitignore/.gitattributesfollow the registry; DESIGN.md links nametools.docs_projection_gateregen.HealRegeneratesAfterProvisionalMerge/ merge-driver ledger recipe). It had no remaining subject.Test plan
.gitattributesdo not read those committed bytes.main_wet_onetwice on.gitignore,.gitattributes,DESIGN.md— second pass zero diff.docs_projection_gateregenwrites the ignored files;git status --shortempty after.witnessesis not evidence (v1_required_lanes_withdrawn).required_lane_claim_agreementsame FAIL on origin/main (pre-existing).carrier(path:)/DOC_PLAN_ROOTSdo not read uncommitted files as checkout inputs.Execution receipts for cool-lark-903 (head
cf8aa34019)Producer: BuildBuddy https://app.buildbuddy.io/invocation/a0ad2351-cc6f-4b02-9b95-5602b70dd3c2
ctrl-build --remote --timeout 2h -- bash -lcwithexport GUNBC_MEMORY_BUDGET_BYTES=6000000000inside that bash (not forwarded). Builttarget/release/gunbcin the same dispatch.(A)
documentation_weton a fresh clone atcf8aa34019git clonethengit checkout --detach cf8aa34019→FRESH_HEAD=cf8aa34019503f17300b2432e92a787bfc39a68eabsent=36 present=0)gunbc run … generated_artifact_gate --function documentation_wetexit=0; wrote each path once (MISSING_AFTER_1=0), includingFilesystem.Write ROADMAP.mdanddocs/plans/source-layout-authority.mddocumentation_wetexit=0; sha256 of all 36 paths identical to pass 1 (BODIES_EQ_SECOND_GENERATE=yes) — written body ==artifact_generatere-rungit status --shortempty (ignored)ROADMAP.md sha256
54c36bff9ae0c0d6d7e6d8a449654e736abac3bf26780a77d562fbac01bd6dd6(B)
main_wet_oneDESIGN.md from the merged authorities (not a hand merge)Two passes, both exit=0. Hash unchanged:
d5c62b46b97f780a9297f08c3233a4406badc7eb644214b2b2782baa716f1e80Receipts (remote BuildBuddy,
export GUNBC_MEMORY_BUDGET_BYTES=6000000000insidebash -lc)Head
635f6fdd05(docs-gate sentence refresh). Prior receipts onad54b45011. Invocations: https://app.buildbuddy.io/invocation/92c4a533-1763-45d3-8c71-823bb66dd175 , https://app.buildbuddy.io/invocation/4b9951f9-efff-4b15-a453-692a05e3c26e , main control https://app.buildbuddy.io/invocation/e215058c-3597-46e9-808d-698ed54fa0ce .(1) Producer regen, second pass zero-diff
main_wet_one --arg path=for.gitignore,.gitattributes,DESIGN.md. Each pass exit=0. Pass1 hashes = pass2 hashes;git diffempty..gitignorea17dad2f93f3951d8528c98f1d531eb0698fae889f235dec320f35d642330586.gitattributes79766194a8ada090f9ef9f104f0befd6ceaad5ff391addd1cabf2e921f9c72edDESIGN.mdd365ba2678264781311dac37594ae8d0ed0069140fe10fd76ffa38626b9b8626(2) Docs regen writes ignored files; status clean
docs_projection_gateregenexit=0. Wrotedocs/design-failure-modes.md(4.2MiB),docs/design-rung-drops.md(580KiB),docs/onboarding.md(46KiB).git check-ignorehits.gitignore:194-197.git status --shortempty after.(3) Remote claims
w_no_projected_ledger_denies_a_lane_the_roster_requiresFAIL on both trees (same four controls PASS). The wall readsexpected_design_failure_modes_md()(producer text), not checkout bytes.docs/design-failure-modes.mdis already absent on main. Pre-existing; this flip did not cause it.(4) Residual path names: who reads the file?
roadmap_authoritycarrier(path:)—Pointer.pathis a citation label. Production uses it as ROADMAP/page href, dispatch-brief JSON, and markdown link text (roadmap_emit,roadmap_presentation,roadmap_spawner,roadmap_dispatch_actuator). NothingFilesystem.Reads those paths.pointer_resolves/node_carrier_cleanexist only inroadmap_model_testagainst a supplied fixture list. Rows that still namedocs/design-rung-drops.mdor a generated plan path are labels for a file that exists afterregen, not checkout inputs. Not repointed: thePointertype is path-shaped, not aDeclarationRef, and the rows are not a file-reader.Seed
DOC_PLAN_ROOTS=ROADMAP.md,DESIGN.md—build_doc_graph_reportdoesread_to_stringeach root. Missing file iscontinue, not a refuse (cli_run.rs).DESIGN.mdstays committed and is still read.ROADMAP.mdis read only when present after on-demand regen; a checkout without it skips.gunbc.doc_graph_rootsextra_rootsalready omitPlanIsAuthorityOnly; remaining plan slugs are admitted only if they exist underdocs/. Seed left as-is (v1 seed, optional-when-present root).