feat(harness): P5 — customization manifest (rcust)
continuous-integration/drone/push Build is passing
continuous-integration/drone/push Build is passing
One block at run start answering "what does this recipe customize?" across every surface (non-default recipe_meta keys, ops.py pre-ops, install_steps.sh, compose.ccci.yml, lifecycle overlays by source, custom-test counts, active CCCI_SKIP_GENERIC* env overrides — !!-flagged when riding a CI run, P2c), printed to the run log and embedded verbatim in results.json under "customization". Pure presentation — building/printing it never influences a verdict; the manifest honors the HC2 repo-local gate so it never advertises code the run will not execute. Unit tests: synthetic recipe exercising every surface -> complete + deterministic + JSON-clean; HC2 invisibility; env-override flagging; render golden lines; build_results threads the dict verbatim (key always present, None when absent). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
29a28e2028
commit
68954be53e
@@ -58,6 +58,9 @@ from harness import ( # noqa: E402
|
||||
from harness import ( # noqa: E402
|
||||
deps as deps_mod,
|
||||
)
|
||||
from harness import ( # noqa: E402
|
||||
manifest as manifest_mod,
|
||||
)
|
||||
from harness import ( # noqa: E402
|
||||
meta as meta_mod,
|
||||
)
|
||||
@@ -880,6 +883,12 @@ def main() -> int:
|
||||
repo_local = snapshot_recipe_tests(recipe)
|
||||
meta = meta_mod.load(recipe)
|
||||
|
||||
# Customization manifest (rcust P5, R4): ONE block answering "what does this recipe
|
||||
# customize?" across all surfaces — printed here and embedded verbatim in results.json under
|
||||
# "customization". Pure presentation; never influences a verdict.
|
||||
customization = manifest_mod.build(recipe, meta, repo_local)
|
||||
print("\n" + manifest_mod.render(recipe, customization) + "\n", flush=True)
|
||||
|
||||
# WC4/WC7: opt-in `--quick` fast lane. Requires an existing data-warm canonical; if none, fall
|
||||
# back cleanly to the full COLD run below so the PR is still tested (DECISIONS Phase-2w).
|
||||
if os.environ.get("CCCI_QUICK") == "1" or os.environ.get("MODE") == "quick":
|
||||
@@ -1249,6 +1258,7 @@ def main() -> int:
|
||||
screenshot=screenshot_rel, # Phase 3 U1 (R4): relative PNG name iff capture succeeded
|
||||
finished_ts=time.time(),
|
||||
expected_na=meta.EXPECTED_NA, # declared intentional-skip map (recipe_meta)
|
||||
customization=customization, # rcust P5: the run-start manifest, verbatim
|
||||
)
|
||||
# Real (if narrow) leak check: no known infra-secret value may appear in the artifact (R7).
|
||||
blob = json.dumps(data)
|
||||
|
||||
Reference in New Issue
Block a user