KB-2859

02 - Source Artifact Manifest & SHA (O6B)

4 min read Revision 1
dot-iu-cutterv0.6O6BG2artifactsha256manifest

02 - Source Artifact Manifest & SHA

O6B · doc 2 of 8 · 2026-05-21 · Gate G2 — clean source artifact creation.

1. Artifact creation method

method:   git archive   (tracked-files-only — guarantees no untracked junk)
command:  git archive --format=tar.gz --prefix=iu-cutter-v0.6/ \
                      -o iu-cutter-v0.6-6625f76.tar.gz 6625f76
source_commit: 6625f768841dd80a9d524fb722889731edc53c07
why_git_archive: |
  git archive emits EXACTLY the tree tracked at the commit. Untracked
  artifacts (.git, __pycache__, .pytest_cache, *.pyc, scratch, tmp,
  any .env) are structurally impossible to include — they are not
  tracked, so they cannot appear in the archive.

2. Artifact identity

file:          iu-cutter-v0.6-6625f76.tar.gz
local_path:    /Users/nmhuyen/iu-cutter-build/o6b-artifact/iu-cutter-v0.6-6625f76.tar.gz
size_bytes:    176544
sha256:        b2c11e505fa2a28500317911da38dbeb93c8ccbda381ac8ff734222ce3557b6b
tar_entries:   88  (80 files + 8 directory entries)
prefix:        iu-cutter-v0.6/  (extracts directly to the deploy dir name)

3. Forbidden-file scan (inside the artifact)

scan_patterns:  .git/ .git .env *.pyc __pycache__ .pytest_cache
                /tmp/ scratch id_rsa *.pem *.key secret
result:         CLEAN — ZERO matches

4. Full manifest (80 files)

top-level:   .gitignore  README.md  cli.py
             constitution-normalized-17660443e0f23e99.md

cutter_agent/        __init__.py canonicalization.py cutplan.py cutprod.py
  (v0.4+v0.5 core)   cutprod_canonical.py cutwrite.py db_adapter.py dryrun.py
                     idempotency.py ledger.py ledger_v2_canonical_cut.py
                     ledger_v2_canonical_verify.py phases.py
                     prod_iu_adapter.py prod_iu_adapter_canonical.py
                     signal.py signing.py state_machine.py

cutter_agent/orchestrator/   __init__.py approval.py batch.py discover.py
  (v0.6 — 15 modules)        enums.py errors.py gates.py kb_reporter.py
                             policy.py run_context.py runner.py state_store.py

cutter_agent/orchestrator/phases/   __init__.py backup.py closeout.py
  (12 phase modules)                cut_leg_a.py cutplan.py grant_probe.py
                                    leg_b_record.py lifecycle_enact.py mark.py
                                    source_pin.py structural_verify.py
                                    write_verify.py

sql/lifecycle/   README.md bundle_a..e (5 bundles) fingerprints.yaml
  (11 files)     rollback_runbook.sql verify_preflight.sql
                 verify_postapply.sql verify_behavioral_probes.sql

tests/   _orchestrator_o2_harness.py + fixtures/constitution-normalized*.md
  (24)   + 21 test_*.py files (all unittest.TestCase based)

5. Result

G2_verdict:  PASS
artifact:    iu-cutter-v0.6-6625f76.tar.gz
sha256:      b2c11e505fa2a28500317911da38dbeb93c8ccbda381ac8ff734222ce3557b6b
forbidden_files: NONE
contents:    code + tests + sql/lifecycle + README/runbooks  (complete)
proceed_to:  G3 Contabo preflight
Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/v0.6-o6b-devhost-deploy-postdeploy-smoke/02-source-artifact-manifest-and-sha-2026-05-21.md