Jon Chery
|
2ed2b3ae0f
|
feat(P01): nova subcommands — thin delegates to core/* (CAP-033/034, cli-engineer)
One nova/<name>.py per user-facing core/ module. Each ≤50 lines, ≤3
FunctionDef (add_parser + run [+1 helper]), every user-function call
resolves to a core.* import, no `if` statements except `if __name__`.
Subcommands:
- nova resolve → core.contract_resolver.resolve
- nova decommission → core.decommission_transform.decommission_transform
- nova env-transition detect|record → core.env_transition
- nova env-check → core.environment_check.check
- nova hitl → core.hitl_gates.attest (+ approver_from_env)
- nova onboard → core.onboarding.generate_env_file
- nova outbox → core.outbox_writer.write_event
- nova publish-outputs → core.output_publisher.publish_to_ssm + format_comment
- nova policy → core.policy_engine.get_engine + get_policy_root (status)
- nova regression → core.regression_verify.run_regression + write_report
- nova sod → core.separation_of_duties.check
- nova readiness → core.submission_readiness.cli_main
- nova attestation-matrix → core.attestation_matrix.cli_main (new thin wrapper)
- nova confidence → core.confidence_signal.cli_main (new thin wrapper)
core wrappers added (minimal): attestation_matrix.cli_main,
confidence_signal.cli_main — extracted from their __main__ blocks so
the nova subcommands stay thin.
---ci---
project: acdl
phase: 1
milestone: v1.28
status: execute
persona: cli-engineer
---/ci---
|
2026-08-19 22:25:00 +00:00 |
|
Jon Chery
|
83883076ff
|
feat(P01): nova init scaffold (REQ-325, cli-engineer)
- core/init_scaffold.py: scaffold(root, force) creates .nova/,
.nova/contract.yml.attestations/, and appends secrets-exclusion lines
to .gitignore (~/.nova/credentials.json, .nova/credentials.json,
*.pem, *.key, .env, .env.*). Refuses overwrite without --force.
- nova/init.py: thin subcommand parsing --force, delegates to
core.init_scaffold.scaffold.
---ci---
project: acdl
phase: 1
milestone: v1.28
status: execute
persona: cli-engineer
---/ci---
|
2026-08-19 22:24:17 +00:00 |
|
Jon Chery
|
0388751c6e
|
feat(P01): nova/cli.py entry point + dispatch + audit (REQ-324, INV-12, cli-engineer)
- main(argv) builds top-level argparse(prog="nova") with required subparsers.
- Auto-discovers nova/<module>.py via pkgutil.iter_modules(nova.__path__),
skipping `cli`; each module exports add_parser(subparsers) + run(args) -> int.
- Before dispatch: resolve_mode_from_env() → emit cli.invocation audit
event (INV-12) as a stderr JSON line stub with mode, selection_reason,
credential_type, command, args. Real outbox wiring comes later.
- Dispatch: args._run(args); exit code via sys.exit(main()).
- nova/__init__.py empty package marker.
---ci---
project: acdl
phase: 1
milestone: v1.28
status: execute
persona: cli-engineer
---/ci---
|
2026-08-19 22:24:07 +00:00 |
|