Skip to content

Commit 21dbeed

Browse files
authored
Merge pull request #161 from Automattic/fix/160-drift-audit-contract
Require drift audit before maintenance no-op
2 parents 53f43bc + 2df342f commit 21dbeed

10 files changed

Lines changed: 22 additions & 14 deletions

.github/workflows/maintain-docs.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: Maintain Docs
22

33
env:
44
# Advance this revision and all package digests together when package bytes change.
5-
DOCS_AGENT_PACKAGE_REVISION: 7b2df969c34de112ec7ad13189ba94226a7f76f3
5+
DOCS_AGENT_PACKAGE_REVISION: 85443eb91c12b2759d8e207f1ae4421407b4cc5e
66

77
'on':
88
workflow_call:
@@ -140,7 +140,7 @@ jobs:
140140
technical:maintenance)
141141
package_path="bundles/technical-docs-agent/native/technical-docs-maintenance-agent.agent.json"
142142
agent_slug="technical-docs-maintenance-agent"
143-
package_digest="sha256-bytes-v1:6057aad4eb7c5f0320ccfbce9da93a5fa1d3fc521478b5571ed81c28129325aa"
143+
package_digest="sha256-bytes-v1:78fef9f8d787866c7b48b8f044769d38c0528778c8e2a82af816f9f8ea65014f"
144144
lane_requires_pr=false
145145
default_prompt="Maintain source-grounded developer documentation that helps developers understand, use, and extend the code in the repository."
146146
;;

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ Docs Agent has one canonical architecture: five standalone native Agents API pac
191191
- `bundles/user-docs-agent/native/user-docs-maintenance-agent.agent.json`
192192
- `bundles/skills-agent/native/skills-maintenance-agent.agent.json`
193193

194-
These five `.agent.json` files are the complete executable package surface. Each package is the sole executable instruction authority for its lane. The reusable workflow maps `audience` and `run_kind` to exactly one package and its canonical agent slug; it does not select a separate manifest, flow, pipeline, or memory envelope. Every descriptor uses the package-source revision `7b2df969c34de112ec7ad13189ba94226a7f76f3`, independently of the revision that invokes the reusable workflow, and supplies a byte-level `sha256-bytes-v1` digest.
194+
These five `.agent.json` files are the complete executable package surface. Each package is the sole executable instruction authority for its lane. The reusable workflow maps `audience` and `run_kind` to exactly one package and its canonical agent slug; it does not select a separate manifest, flow, pipeline, or memory envelope. Every descriptor uses the package-source revision `85443eb91c12b2759d8e207f1ae4421407b4cc5e`, independently of the revision that invokes the reusable workflow, and supplies a byte-level `sha256-bytes-v1` digest.
195195

196196
Package updates advance the package-source revision and all five declared digests atomically. The immutable-source validator reads each package blob from that Git revision, recomputes its digest and canonical slug, and rejects a descriptor that does not match those historical bytes.
197197

bundles/technical-docs-agent/native/technical-docs-maintenance-agent.agent.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

ci/docs-agent-runner-recipe.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
"docsAgent": {
66
"externalPackageSource": {
77
"repository": "Automattic/docs-agent",
8-
"revision": "7b2df969c34de112ec7ad13189ba94226a7f76f3",
8+
"revision": "85443eb91c12b2759d8e207f1ae4421407b4cc5e",
99
"path": "bundles/technical-docs-agent/native/technical-docs-maintenance-agent.agent.json",
10-
"digest": "sha256-bytes-v1:6057aad4eb7c5f0320ccfbce9da93a5fa1d3fc521478b5571ed81c28129325aa"
10+
"digest": "sha256-bytes-v1:78fef9f8d787866c7b48b8f044769d38c0528778c8e2a82af816f9f8ea65014f"
1111
},
1212
"agentSlug": "technical-docs-maintenance-agent"
1313
},

examples/runner-recipe.example.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
"docsAgent": {
66
"externalPackageSource": {
77
"repository": "Automattic/docs-agent",
8-
"revision": "7b2df969c34de112ec7ad13189ba94226a7f76f3",
8+
"revision": "85443eb91c12b2759d8e207f1ae4421407b4cc5e",
99
"path": "bundles/technical-docs-agent/native/technical-docs-maintenance-agent.agent.json",
10-
"digest": "sha256-bytes-v1:6057aad4eb7c5f0320ccfbce9da93a5fa1d3fc521478b5571ed81c28129325aa"
10+
"digest": "sha256-bytes-v1:78fef9f8d787866c7b48b8f044769d38c0528778c8e2a82af816f9f8ea65014f"
1111
},
1212
"agentSlug": "technical-docs-maintenance-agent"
1313
},

tests/native-agent.validate-package-spec.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,14 @@
6262
"understand, use, and extend",
6363
"maintenance pass",
6464
"documentation drift",
65+
"bounded source-vs-document drift audit",
66+
"existing documentation claims",
67+
"configuration and workflow behavior",
68+
"immutable revisions and provenance",
69+
"commands, tests, examples, and operational contracts",
70+
"every audited claim matches source",
71+
"smallest reviewable documentation correction",
72+
"runner-enforced writable path scope",
6573
"no_changes",
6674
"provided workspace",
6775
"workspace_git_status",

tests/reusable-workflow-empty-called-workflow-context.fixture.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
"called_workflow_context": {
44
"job_workflow_sha": ""
55
},
6-
"expected_package_revision": "7b2df969c34de112ec7ad13189ba94226a7f76f3"
6+
"expected_package_revision": "85443eb91c12b2759d8e207f1ae4421407b4cc5e"
77
}

tests/validate-docs-agent-packages.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@
4444
$assert( 'docs-agent/runner-recipe/v1' === ( $recipe['schema'] ?? null ), 'Runner recipe must use the portable Docs Agent runner recipe schema.' );
4545
$expected_package_source = array(
4646
'repository' => 'Automattic/docs-agent',
47-
'revision' => '7b2df969c34de112ec7ad13189ba94226a7f76f3',
47+
'revision' => '85443eb91c12b2759d8e207f1ae4421407b4cc5e',
4848
'path' => 'bundles/technical-docs-agent/native/technical-docs-maintenance-agent.agent.json',
49-
'digest' => 'sha256-bytes-v1:6057aad4eb7c5f0320ccfbce9da93a5fa1d3fc521478b5571ed81c28129325aa',
49+
'digest' => 'sha256-bytes-v1:78fef9f8d787866c7b48b8f044769d38c0528778c8e2a82af816f9f8ea65014f',
5050
);
5151
foreach ( array( $recipe, $example ) as $runner_recipe ) {
5252
$assert( $expected_package_source === ( $runner_recipe['docsAgent']['externalPackageSource'] ?? null ), 'Runner recipes must use the immutable Docs Agent package source.' );

tests/validate-external-native-package-sources.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@
3030
return $contents;
3131
};
3232

33-
$package_revision = '7b2df969c34de112ec7ad13189ba94226a7f76f3';
33+
$package_revision = '85443eb91c12b2759d8e207f1ae4421407b4cc5e';
3434
$packages = array(
3535
'technical:bootstrap' => array( 'path' => 'bundles/technical-docs-agent/native/technical-docs-bootstrap-agent.agent.json', 'slug' => 'technical-docs-bootstrap-agent', 'digest' => '9050c9b4364a5a91b057fd51ff5f667efc320f9d6776160ab3e7cf4fd5e4f0e6' ),
36-
'technical:maintenance' => array( 'path' => 'bundles/technical-docs-agent/native/technical-docs-maintenance-agent.agent.json', 'slug' => 'technical-docs-maintenance-agent', 'digest' => '6057aad4eb7c5f0320ccfbce9da93a5fa1d3fc521478b5571ed81c28129325aa' ),
36+
'technical:maintenance' => array( 'path' => 'bundles/technical-docs-agent/native/technical-docs-maintenance-agent.agent.json', 'slug' => 'technical-docs-maintenance-agent', 'digest' => '78fef9f8d787866c7b48b8f044769d38c0528778c8e2a82af816f9f8ea65014f' ),
3737
'user:bootstrap' => array( 'path' => 'bundles/user-docs-agent/native/user-docs-bootstrap-agent.agent.json', 'slug' => 'user-docs-bootstrap-agent', 'digest' => 'ee558a73f2a393c1912d62f7f40dbdd4bc31ac0168c3c248316b3430258c55cd' ),
3838
'user:maintenance' => array( 'path' => 'bundles/user-docs-agent/native/user-docs-maintenance-agent.agent.json', 'slug' => 'user-docs-maintenance-agent', 'digest' => 'e2248f014c1409a8d4c5cb303ea37c0b24ae05babd02d40c6032160daf60d4c4' ),
3939
'skills:maintenance' => array( 'path' => 'bundles/skills-agent/native/skills-maintenance-agent.agent.json', 'slug' => 'skills-maintenance-agent', 'digest' => 'c643f8bd31864cdd607f9025a000694a65a3fdf91532e4311fbac541e708a2b2' ),

tests/validate-wp-codebox-run-agent-task-contract.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@
224224

225225
$assert( isset( $caller_inputs['external_package_source'] ), 'Docs Agent must provide the required external package descriptor.' );
226226
$assert( ! isset( $caller_inputs['agent_bundle'] ), 'Docs Agent must not pass the removed agent_bundle input.' );
227-
$assert( str_contains( $workflow, 'DOCS_AGENT_PACKAGE_REVISION: 7b2df969c34de112ec7ad13189ba94226a7f76f3' ), 'Docs Agent must use the fixed native package source revision.' );
227+
$assert( str_contains( $workflow, 'DOCS_AGENT_PACKAGE_REVISION: 85443eb91c12b2759d8e207f1ae4421407b4cc5e' ), 'Docs Agent must use the fixed native package source revision.' );
228228
$assert( ! str_contains( $workflow, 'github.job_workflow_sha' ), 'Docs Agent must not depend on unavailable called-workflow provenance.' );
229229

230230
preg_match( "/runtime_sources='(?<json>[^']+)'/", $workflow, $runtime_sources_match );

0 commit comments

Comments
 (0)