)]}'
{"puppet/services/nova-base.yaml":[{"author":{"_account_id":11090,"name":"Sergii Golovatiuk","email":"sgolovat@redhat.com","username":"holser"},"change_message_id":"4d1440a613541c17865868c1df8f0a3c728c4693","unresolved":false,"context_lines":[{"line_number":146,"context_line":"  NovaCronArchiveDeleteRowsPurge:"},{"line_number":147,"context_line":"    type: boolean"},{"line_number":148,"context_line":"    description: \u003e"},{"line_number":149,"context_line":"        Cron to move deleted instances to another table - Purge tables"},{"line_number":150,"context_line":"    default: true"},{"line_number":151,"context_line":"  NovaPlacementAPIInterface:"},{"line_number":152,"context_line":"    type: string"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"df7087c5_3cfb9047","line":149,"updated":"2018-03-13 09:55:25.000000000","message":"This doesn\u0027t solve the problem. It just moves it to another table. There should be periodic task that cleans up that table after some period of time","commit_id":"4eab34435e99d3207d7d3128b9615359ba8730f6"},{"author":{"_account_id":20775,"name":"Carlos Camacho","email":"ccamacho@redhat.com","username":"ccamacho"},"change_message_id":"e1a2d58368d6075867ab140a98608c55620a0ce3","unresolved":false,"context_lines":[{"line_number":146,"context_line":"  NovaCronArchiveDeleteRowsPurge:"},{"line_number":147,"context_line":"    type: boolean"},{"line_number":148,"context_line":"    description: \u003e"},{"line_number":149,"context_line":"        Cron to move deleted instances to another table - Purge tables"},{"line_number":150,"context_line":"    default: true"},{"line_number":151,"context_line":"  NovaPlacementAPIInterface:"},{"line_number":152,"context_line":"    type: string"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"df7087c5_d6490731","line":149,"in_reply_to":"df7087c5_3cfb9047","updated":"2018-03-13 16:12:46.000000000","message":"Yes it does.\n\nThis is actually configuring the periodic task to add the option --purge, which will clean up the table just after archiving the deleted rows.","commit_id":"4eab34435e99d3207d7d3128b9615359ba8730f6"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"96b4bb374847a9ce41eb65f7d9af7318a1acce46","unresolved":false,"context_lines":[{"line_number":146,"context_line":"  NovaCronArchiveDeleteRowsPurge:"},{"line_number":147,"context_line":"    type: boolean"},{"line_number":148,"context_line":"    description: \u003e"},{"line_number":149,"context_line":"        Cron to move deleted instances to another table - Purge tables"},{"line_number":150,"context_line":"    default: true"},{"line_number":151,"context_line":"  NovaPlacementAPIInterface:"},{"line_number":152,"context_line":"    type: string"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"df7087c5_581ce276","line":149,"in_reply_to":"df7087c5_d6490731","updated":"2018-03-16 16:42:37.000000000","message":"As discussed on IRC, purging on every archive isn\u0027t ideal. Instead `nova-manage db purge` can be used to just purge rows and accepts a date. We could then have something like a NovaArchivedRowRenentionDays param, where 0 effectively means purge on every archive.","commit_id":"4eab34435e99d3207d7d3128b9615359ba8730f6"},{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"07da1dd08e8bf1991021f89726fcf93b7d6cc8ef","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        purging the shadow tables in days."},{"line_number":192,"context_line":"        Zero means, purge data older than today in"},{"line_number":193,"context_line":"        shadow tables."},{"line_number":194,"context_line":"    default: \u00270\u0027"},{"line_number":195,"context_line":"  NovaCronPurgeShadowTablesVerbose:"},{"line_number":196,"context_line":"    type: boolean"},{"line_number":197,"context_line":"    description: \u003e"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"df7087c5_036672c2","line":194,"updated":"2018-03-22 15:31:23.000000000","message":"Do we really want 0 as the default? This is basically no retention. Is this an ideal setting?","commit_id":"0ed7f742f1d9b647022fabfd2dcb0a6406ac2313"},{"author":{"_account_id":20775,"name":"Carlos Camacho","email":"ccamacho@redhat.com","username":"ccamacho"},"change_message_id":"f59d24b36e3e04e78d5ee3fdffcb0578be77a0e8","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        purging the shadow tables in days."},{"line_number":192,"context_line":"        Zero means, purge data older than today in"},{"line_number":193,"context_line":"        shadow tables."},{"line_number":194,"context_line":"    default: \u00270\u0027"},{"line_number":195,"context_line":"  NovaCronPurgeShadowTablesVerbose:"},{"line_number":196,"context_line":"    type: boolean"},{"line_number":197,"context_line":"    description: \u003e"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"df7087c5_63cc0e6a","line":194,"in_reply_to":"df7087c5_036672c2","updated":"2018-03-22 15:41:26.000000000","message":"Ok Alex, yeah.. So, I think the retention policy must be related to how much frequent we are running the cron, i.e. if we put 15 days, we can run the cron each 2 weeks.\n\nDo you think is a good idea to have 15 days as the retention default and run this cron each 2 weeks?","commit_id":"0ed7f742f1d9b647022fabfd2dcb0a6406ac2313"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"664b06a487e9d31f19a0e72e8cffff555658c50d","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        purging the shadow tables in days."},{"line_number":192,"context_line":"        Zero means, purge data older than today in"},{"line_number":193,"context_line":"        shadow tables."},{"line_number":194,"context_line":"    default: \u00270\u0027"},{"line_number":195,"context_line":"  NovaCronPurgeShadowTablesVerbose:"},{"line_number":196,"context_line":"    type: boolean"},{"line_number":197,"context_line":"    description: \u003e"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"df7087c5_a331c65b","line":194,"in_reply_to":"df7087c5_63cc0e6a","updated":"2018-03-22 15:43:34.000000000","message":"That\u0027s not what today-0days means. It means you have two weeks of retention for data that is two weeks old, and zero days of retention for stuff created on the day you\u0027re running the purge.\n\nIMHO, you should run it every two weeks with 14 days of backwards visibility, which gets you \"at least two weeks\". Or, run it nightly with a fourteen-day look back.","commit_id":"0ed7f742f1d9b647022fabfd2dcb0a6406ac2313"},{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"4a2c6912e815d3877deaef99f237cd11636ba59a","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        purging the shadow tables in days."},{"line_number":192,"context_line":"        Zero means, purge data older than today in"},{"line_number":193,"context_line":"        shadow tables."},{"line_number":194,"context_line":"    default: \u00270\u0027"},{"line_number":195,"context_line":"  NovaCronPurgeShadowTablesVerbose:"},{"line_number":196,"context_line":"    type: boolean"},{"line_number":197,"context_line":"    description: \u003e"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"df7087c5_be423d0e","line":194,"in_reply_to":"df7087c5_a331c65b","updated":"2018-03-22 16:05:44.000000000","message":"I would assume it\u0027s better to run it daily with 14 day retention because you\u0027d only purge 1days worth of data every run instead of running it every 2 weeks and purging 14 days worth of data. I would think the daily purge method would have less impact on the system as a whole depending on how large these tables get","commit_id":"0ed7f742f1d9b647022fabfd2dcb0a6406ac2313"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"d180e5cfc12ba2858897e2fb10de739844f46cfb","unresolved":false,"context_lines":[{"line_number":146,"context_line":"  NovaCronArchiveDeleteRowsPurge:"},{"line_number":147,"context_line":"    type: boolean"},{"line_number":148,"context_line":"    description: \u003e"},{"line_number":149,"context_line":"        Cron to move deleted instances to another table - Purge tables"},{"line_number":150,"context_line":"    default: false"},{"line_number":151,"context_line":"  NovaCronPurgeShadowTablesMinute:"},{"line_number":152,"context_line":"    type: string"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"df7087c5_4b1eb3bb","line":149,"range":{"start_line":149,"start_character":8,"end_line":149,"end_character":70},"updated":"2018-03-23 09:57:04.000000000","message":"(nit) All of the descriptions seem a bit noisy to me - mostly repeating the info that we already have in the param name. In this case something like \"Purge shadow tables immediately after scheduled archiving\" would be far better I think.\n\nAlso not sure we need this when we can set NovaCronPurgeShadowTablesAge to 0.","commit_id":"e67f1d181acd1c436989d76870a5b0bfe1dc6f0f"},{"author":{"_account_id":20775,"name":"Carlos Camacho","email":"ccamacho@redhat.com","username":"ccamacho"},"change_message_id":"785c7b1c7e5d1aa01701cff24983596af6d0487d","unresolved":false,"context_lines":[{"line_number":146,"context_line":"  NovaCronArchiveDeleteRowsPurge:"},{"line_number":147,"context_line":"    type: boolean"},{"line_number":148,"context_line":"    description: \u003e"},{"line_number":149,"context_line":"        Cron to move deleted instances to another table - Purge tables"},{"line_number":150,"context_line":"    default: false"},{"line_number":151,"context_line":"  NovaCronPurgeShadowTablesMinute:"},{"line_number":152,"context_line":"    type: string"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"df7087c5_3a05b910","line":149,"range":{"start_line":149,"start_character":8,"end_line":149,"end_character":70},"in_reply_to":"df7087c5_4b1eb3bb","updated":"2018-03-23 14:46:41.000000000","message":"Yeah because you might add the --purge to the archive cron without using the new purge cron. User can configure it to suit their needs.","commit_id":"e67f1d181acd1c436989d76870a5b0bfe1dc6f0f"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"d180e5cfc12ba2858897e2fb10de739844f46cfb","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        Cron to purge shadow tables - Log destination"},{"line_number":185,"context_line":"    default: \u0027/var/log/nova/nova-rowspurge.log\u0027"},{"line_number":186,"context_line":"  NovaCronPurgeShadowTablesAge:"},{"line_number":187,"context_line":"    type: string"},{"line_number":188,"context_line":"    description: \u003e"},{"line_number":189,"context_line":"        Cron to purge shadow tables - Age"},{"line_number":190,"context_line":"        This will define the retention policy when"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"df7087c5_ebd227d1","line":187,"range":{"start_line":187,"start_character":10,"end_line":187,"end_character":16},"updated":"2018-03-23 09:57:04.000000000","message":"should that be number?","commit_id":"e67f1d181acd1c436989d76870a5b0bfe1dc6f0f"},{"author":{"_account_id":20775,"name":"Carlos Camacho","email":"ccamacho@redhat.com","username":"ccamacho"},"change_message_id":"785c7b1c7e5d1aa01701cff24983596af6d0487d","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        Cron to purge shadow tables - Log destination"},{"line_number":185,"context_line":"    default: \u0027/var/log/nova/nova-rowspurge.log\u0027"},{"line_number":186,"context_line":"  NovaCronPurgeShadowTablesAge:"},{"line_number":187,"context_line":"    type: string"},{"line_number":188,"context_line":"    description: \u003e"},{"line_number":189,"context_line":"        Cron to purge shadow tables - Age"},{"line_number":190,"context_line":"        This will define the retention policy when"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"df7087c5_bfd69bf1","line":187,"range":{"start_line":187,"start_character":10,"end_line":187,"end_character":16},"in_reply_to":"df7087c5_ebd227d1","updated":"2018-03-23 14:46:41.000000000","message":"Done","commit_id":"e67f1d181acd1c436989d76870a5b0bfe1dc6f0f"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"d180e5cfc12ba2858897e2fb10de739844f46cfb","unresolved":false,"context_lines":[{"line_number":187,"context_line":"    type: string"},{"line_number":188,"context_line":"    description: \u003e"},{"line_number":189,"context_line":"        Cron to purge shadow tables - Age"},{"line_number":190,"context_line":"        This will define the retention policy when"},{"line_number":191,"context_line":"        purging the shadow tables in days."},{"line_number":192,"context_line":"        Zero means, purge data older than today in"},{"line_number":193,"context_line":"        shadow tables."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"df7087c5_caaf1428","line":190,"range":{"start_line":190,"start_character":29,"end_line":190,"end_character":45},"updated":"2018-03-23 09:57:04.000000000","message":"What if an operator wants to disable this completely?\nThey could set it to 100 years I suppose, but maybe we should have an option to explicitly disable purging.","commit_id":"e67f1d181acd1c436989d76870a5b0bfe1dc6f0f"},{"author":{"_account_id":20775,"name":"Carlos Camacho","email":"ccamacho@redhat.com","username":"ccamacho"},"change_message_id":"785c7b1c7e5d1aa01701cff24983596af6d0487d","unresolved":false,"context_lines":[{"line_number":187,"context_line":"    type: string"},{"line_number":188,"context_line":"    description: \u003e"},{"line_number":189,"context_line":"        Cron to purge shadow tables - Age"},{"line_number":190,"context_line":"        This will define the retention policy when"},{"line_number":191,"context_line":"        purging the shadow tables in days."},{"line_number":192,"context_line":"        Zero means, purge data older than today in"},{"line_number":193,"context_line":"        shadow tables."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"df7087c5_9fc15757","line":190,"range":{"start_line":190,"start_character":29,"end_line":190,"end_character":45},"in_reply_to":"df7087c5_caaf1428","updated":"2018-03-23 14:46:41.000000000","message":"They can set https://github.com/openstack/tripleo-heat-templates/blob/c9310097027ed2448f721c7be1f6350ca3117d23/puppet/services/nova-api.yaml#L53\n\nNovaEnableDBPurge \u003c- false\n\nAdded this new parameter so operator can configure whatever suits their need.\n\nNovaEnableDBArchive \u003c- false\n\n\nWhich will enable/disable the DB purge.\n\nPlease refer to https://review.openstack.org/#/c/555362\nHere is the validation about the cron jobs that will be installed.","commit_id":"e67f1d181acd1c436989d76870a5b0bfe1dc6f0f"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"d180e5cfc12ba2858897e2fb10de739844f46cfb","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        Cron to purge shadow tables - Age"},{"line_number":190,"context_line":"        This will define the retention policy when"},{"line_number":191,"context_line":"        purging the shadow tables in days."},{"line_number":192,"context_line":"        Zero means, purge data older than today in"},{"line_number":193,"context_line":"        shadow tables."},{"line_number":194,"context_line":"    default: \u002714\u0027"},{"line_number":195,"context_line":"  NovaCronPurgeShadowTablesVerbose:"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"df7087c5_86d04221","line":192,"range":{"start_line":192,"start_character":8,"end_line":192,"end_character":12},"updated":"2018-03-23 09:57:04.000000000","message":"Somebody will take this literally :-) I\u0027d change this to 0","commit_id":"e67f1d181acd1c436989d76870a5b0bfe1dc6f0f"},{"author":{"_account_id":20775,"name":"Carlos Camacho","email":"ccamacho@redhat.com","username":"ccamacho"},"change_message_id":"785c7b1c7e5d1aa01701cff24983596af6d0487d","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        Cron to purge shadow tables - Age"},{"line_number":190,"context_line":"        This will define the retention policy when"},{"line_number":191,"context_line":"        purging the shadow tables in days."},{"line_number":192,"context_line":"        Zero means, purge data older than today in"},{"line_number":193,"context_line":"        shadow tables."},{"line_number":194,"context_line":"    default: \u002714\u0027"},{"line_number":195,"context_line":"  NovaCronPurgeShadowTablesVerbose:"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"df7087c5_1fcea759","line":192,"range":{"start_line":192,"start_character":8,"end_line":192,"end_character":12},"in_reply_to":"df7087c5_86d04221","updated":"2018-03-23 14:46:41.000000000","message":"Done","commit_id":"e67f1d181acd1c436989d76870a5b0bfe1dc6f0f"},{"author":{"_account_id":8042,"name":"Jiří Stránský","email":"jistr@redhat.com","username":"jistr"},"change_message_id":"f14a60775d46c2edd4c9b51dfbd75a8ea433ba9a","unresolved":false,"context_lines":[{"line_number":314,"context_line":"          nova::cron::archive_deleted_rows::purge: {get_param: NovaCronArchiveDeleteRowsPurge}"},{"line_number":315,"context_line":"          nova::cron::purge_shadow_tables::minute: {get_param: NovaCronPurgeShadowTablesMinute}"},{"line_number":316,"context_line":"          nova::cron::purge_shadow_tables::hour: {get_param: NovaCronPurgeShadowTablesHour}"},{"line_number":317,"context_line":"          nova::cron::purge_shadow_tables::monthday: {get_param: NovaCronPurgeShadowTablesMonthday}"},{"line_number":318,"context_line":"          nova::cron::purge_shadow_tables::month: {get_param: NovaCronPurgeShadowTablesMonth}"},{"line_number":319,"context_line":"          nova::cron::purge_shadow_tables::weekday: {get_param: NovaCronPurgeShadowTablesWeekday}"},{"line_number":320,"context_line":"          nova::cron::purge_shadow_tables::user: {get_param: NovaCronPurgeShadowTablesUser}"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"bf659307_3584400c","line":317,"range":{"start_line":317,"start_character":95,"end_line":317,"end_character":96},"updated":"2018-03-27 13:36:30.000000000","message":"Capital D here, it failed CI:\n\nThe Parameter (NovaCronPurgeShadowTablesMonthday) was not provided.","commit_id":"8d9bdadd1612f808ac3a0966c80fc7007e89f9c6"},{"author":{"_account_id":20775,"name":"Carlos Camacho","email":"ccamacho@redhat.com","username":"ccamacho"},"change_message_id":"3ea3aaeca084b8b4439958b526563a4c8b543814","unresolved":false,"context_lines":[{"line_number":314,"context_line":"          nova::cron::archive_deleted_rows::purge: {get_param: NovaCronArchiveDeleteRowsPurge}"},{"line_number":315,"context_line":"          nova::cron::purge_shadow_tables::minute: {get_param: NovaCronPurgeShadowTablesMinute}"},{"line_number":316,"context_line":"          nova::cron::purge_shadow_tables::hour: {get_param: NovaCronPurgeShadowTablesHour}"},{"line_number":317,"context_line":"          nova::cron::purge_shadow_tables::monthday: {get_param: NovaCronPurgeShadowTablesMonthday}"},{"line_number":318,"context_line":"          nova::cron::purge_shadow_tables::month: {get_param: NovaCronPurgeShadowTablesMonth}"},{"line_number":319,"context_line":"          nova::cron::purge_shadow_tables::weekday: {get_param: NovaCronPurgeShadowTablesWeekday}"},{"line_number":320,"context_line":"          nova::cron::purge_shadow_tables::user: {get_param: NovaCronPurgeShadowTablesUser}"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"bf659307_8da17cac","line":317,"range":{"start_line":317,"start_character":95,"end_line":317,"end_character":96},"in_reply_to":"bf659307_3584400c","updated":"2018-03-27 18:52:59.000000000","message":"Jirka thanks a lot for the correction, didn\u0027t notice it","commit_id":"8d9bdadd1612f808ac3a0966c80fc7007e89f9c6"},{"author":{"_account_id":20775,"name":"Carlos Camacho","email":"ccamacho@redhat.com","username":"ccamacho"},"change_message_id":"49669385dfd253e7123c595ad4d1faf2f60d6327","unresolved":false,"context_lines":[{"line_number":314,"context_line":"          nova::cron::archive_deleted_rows::purge: {get_param: NovaCronArchiveDeleteRowsPurge}"},{"line_number":315,"context_line":"          nova::cron::purge_shadow_tables::minute: {get_param: NovaCronPurgeShadowTablesMinute}"},{"line_number":316,"context_line":"          nova::cron::purge_shadow_tables::hour: {get_param: NovaCronPurgeShadowTablesHour}"},{"line_number":317,"context_line":"          nova::cron::purge_shadow_tables::monthday: {get_param: NovaCronPurgeShadowTablesMonthday}"},{"line_number":318,"context_line":"          nova::cron::purge_shadow_tables::month: {get_param: NovaCronPurgeShadowTablesMonth}"},{"line_number":319,"context_line":"          nova::cron::purge_shadow_tables::weekday: {get_param: NovaCronPurgeShadowTablesWeekday}"},{"line_number":320,"context_line":"          nova::cron::purge_shadow_tables::user: {get_param: NovaCronPurgeShadowTablesUser}"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"bf659307_eeed7d8b","line":317,"range":{"start_line":317,"start_character":95,"end_line":317,"end_character":96},"in_reply_to":"bf659307_3cc89d20","updated":"2018-03-28 09:55:55.000000000","message":"Yeah Oliver you are right there is better to be consistent with the other parameters, also with the naming convention from the other cron job.","commit_id":"8d9bdadd1612f808ac3a0966c80fc7007e89f9c6"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"fc43f430a7ee37f7d4d2e9e312867f7abe84a79f","unresolved":false,"context_lines":[{"line_number":314,"context_line":"          nova::cron::archive_deleted_rows::purge: {get_param: NovaCronArchiveDeleteRowsPurge}"},{"line_number":315,"context_line":"          nova::cron::purge_shadow_tables::minute: {get_param: NovaCronPurgeShadowTablesMinute}"},{"line_number":316,"context_line":"          nova::cron::purge_shadow_tables::hour: {get_param: NovaCronPurgeShadowTablesHour}"},{"line_number":317,"context_line":"          nova::cron::purge_shadow_tables::monthday: {get_param: NovaCronPurgeShadowTablesMonthday}"},{"line_number":318,"context_line":"          nova::cron::purge_shadow_tables::month: {get_param: NovaCronPurgeShadowTablesMonth}"},{"line_number":319,"context_line":"          nova::cron::purge_shadow_tables::weekday: {get_param: NovaCronPurgeShadowTablesWeekday}"},{"line_number":320,"context_line":"          nova::cron::purge_shadow_tables::user: {get_param: NovaCronPurgeShadowTablesUser}"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"bf659307_3cc89d20","line":317,"range":{"start_line":317,"start_character":95,"end_line":317,"end_character":96},"in_reply_to":"bf659307_8da17cac","updated":"2018-03-27 21:41:14.000000000","message":"(nit) Might have been better to change the param to Monthday to be consistent with the Weekday param. However \"monthday\" isn\u0027t a real word AFAIK, so could argue the case for either format I think.","commit_id":"8d9bdadd1612f808ac3a0966c80fc7007e89f9c6"}]}
